Node.js 使用 xmlbuilder 将 XLSX 文件转换为 XML 文件并添加文件头

本文将介绍如何使用 Node.js 和 xmlbuilder 库将 XLSX 文件转换为 XML 文件,并解决在生成的 XML 文件中添加文件头 <?xml version='1.0' encoding='utf-8'?> 的问题。

以下是完整的代码示例:javascriptconst fs = require('fs');const XLSX = require('xlsx');const xml = require('xmlbuilder');

// 读取 XLSX 文件const workbook = XLSX.readFile('path/to/input.xlsx'); // 替换为实际的XLSX文件路径const worksheet = workbook.Sheets[workbook.SheetNames[0]];const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });

// 创建根元素const root = xml.create('DefaultSkillSet');

// 遍历每一行数据jsonData.forEach((row, rowIndex) => { // 跳过表头行 if (rowIndex === 0) { return; }

// 创建 Default 元素 const defaultElement = root.ele('Default'); defaultElement.att('race', row[0]); defaultElement.att('gender', row[1]); defaultElement.att('class', row[2]); defaultElement.att('activeSkillIdList', row[3]); defaultElement.att('passiveSkillIdList', row[4]);});

// 构建 XML 数据const xmlData = xml.create({ version: '1.0', encoding: 'UTF-8' }).ele(root).end({ pretty: true });

// 保存为 XML 文件fs.writeFile('path/to/output.xml', xmlData, 'utf8', err => { if (err) { console.error(err); return; } console.log('转换后的XML文件已保存');});

代码解释:

  1. 引入必要的库: - fs: 用于文件读写操作。 - XLSX: 用于读取 XLSX 文件。 - xmlbuilder: 用于构建 XML 数据。2. 读取 XLSX 文件: - 使用 XLSX.readFile() 读取 XLSX 文件。 - 获取第一个工作表的数据。 - 使用 XLSX.utils.sheet_to_json() 将工作表数据转换为 JSON 格式。3. 创建 XML 根元素: - 使用 xml.create('DefaultSkillSet') 创建名为 'DefaultSkillSet' 的根元素。4. 遍历 JSON 数据: - 遍历每一行 JSON 数据,跳过表头行。 - 为每一行数据创建一个 'Default' 元素,并设置其属性。5. 构建 XML 数据: - 使用 xml.create({ version: '1.0', encoding: 'UTF-8' }) 创建一个新的 XML 对象,并设置版本和编码。 - 使用 .ele(root) 将之前创建的根元素添加到 XML 对象中。 - 使用 .end({ pretty: true }) 以格式化的方式结束 XML 数据的构建。6. 保存为 XML 文件: - 使用 fs.writeFile() 将构建好的 XML 数据保存到指定的输出文件路径。

使用说明:

  1. 将代码中的 path/to/input.xlsx 替换为实际的输入 XLSX 文件路径。2. 将代码中的 path/to/output.xml 替换为实际的输出 XML 文件路径。3. 运行代码,即可将 XLSX 文件转换为 XML 文件,并添加文件头 <?xml version='1.0' encoding='utf-8'?>

希望本文能帮助您使用 Node.js 和 xmlbuilder 库轻松地将 XLSX 文件转换为 XML 文件,并解决文件头问题。

Node.js 使用 xmlbuilder 将 XLSX 文件转换为 XML 文件并添加文件头

原文地址: https://www.cveoy.top/t/topic/pIk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录