Node.js 使用 xmlbuilder 将 XLSX 文件转换为 XML 文件并添加文件头
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文件已保存');});
代码解释:
- 引入必要的库: -
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 数据保存到指定的输出文件路径。
使用说明:
- 将代码中的
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 文件,并解决文件头问题。
原文地址: https://www.cveoy.top/t/topic/pIk 著作权归作者所有。请勿转载和采集!