将 XLSX 文件转换为 XML 格式:使用 Node.js 代码示例
将 XLSX 文件转换为 XML 格式:使用 Node.js 代码示例
本文提供了一个详细的 Node.js 代码示例,演示如何使用 xlsx 和 xmlbuilder 库将 XLSX 文件中的所有内容转换为 XML 格式。该代码解释了每个步骤,包括读取文件、处理数据和创建 XML 文件。
代码示例
const 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 = root.toString({ pretty: true });
// 保存为 XML 文件
fs.writeFile('path/to/output.xml', xmlData, 'utf8', err => {
if (err) {
console.error(err);
return;
}
console.log('转换后的XML文件已保存');
});
代码解释
- 导入库: 使用
require语句导入fs、xlsx和xmlbuilder库。 - 读取 XLSX 文件:
- 使用
XLSX.readFile方法读取 XLSX 文件,并指定文件路径。 - 获取第一个工作表:
workbook.Sheets[workbook.SheetNames[0]]。 - 使用
XLSX.utils.sheet_to_json方法将工作表数据转换为 JSON 格式,并设置header: 1以指定第一行为表头。
- 使用
- 创建 XML 根元素: 使用
xmlbuilder创建一个名为DefaultSkillSet的根元素。 - 遍历 JSON 数据: 使用
forEach循环遍历jsonData中的每一行数据。- 跳过表头行 (
rowIndex === 0)。 - 创建
Default元素:root.ele('Default')。 - 设置
Default元素的属性:使用att方法设置race、gender、class、activeSkillIdList和passiveSkillIdList属性,并根据行数据中的对应索引位置获取值。
- 跳过表头行 (
- 构建 XML 数据: 使用
root.toString({ pretty: true })方法将 XML 数据转换为字符串,并设置pretty: true以生成格式化的 XML 代码。 - 保存 XML 文件: 使用
fs.writeFile方法将转换后的 XML 数据保存为新的 XML 文件,并指定文件路径和编码方式。
运行代码
- 确保你已经安装了
xlsx和xmlbuilder库。 - 将代码中的
path/to/input.xlsx替换为实际的输入 XLSX 文件路径。 - 将
path/to/output.xml替换为实际的输出 XML 文件路径。 - 运行代码。
该代码将读取 XLSX 文件中的所有内容,并将其按照指定的方式转换为 XML 格式,并将转换后的 XML 数据保存到指定的输出文件路径中。
希望这篇文章对你有帮助!
原文地址: https://www.cveoy.top/t/topic/pH4 著作权归作者所有。请勿转载和采集!