使用 Node.js 将 XLSX 文件转换为 XML 文件,根元素为文件名

您是否需要将 XLSX 文件转换为 XML 文件,并将根元素设置为文件名?本教程将为您提供详细的步骤和代码示例,以帮助您使用 Node.js 实现这一目标。

以下是将根元素设置为文件名的代码,以便将 XLSX 文件转换为 XML 文件:

const fs = require('fs');
const path = require('path');
const XLSX = require('xlsx');
const xml = require('xmlbuilder');

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

// 获取文件名
const fileName = path.basename(filePath, path.extname(filePath));

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

// 获取属性行
const attributeRow = jsonData[0];

// 遍历每一行数据
jsonData.slice(1).forEach(row => {
  const element = root.ele(attributeRow[0]);
  attributeRow.slice(1).forEach((attribute, index) => {
    element.att(attribute, row[index + 1]);
  });
});

// 构建 XML 数据
const xmlData = root.end({ pretty: true });

// 保存为 XML 文件
const outputPath = `path/to/${fileName}.xml`; // 替换为实际的输出XML文件路径
fs.writeFile(outputPath, xmlData, 'utf8', err => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(`转换后的XML文件已保存至 ${outputPath}`);
});

代码说明:

  1. 导入必要的模块:

    • fs 用于文件系统操作。
    • path 用于处理文件路径。
    • XLSX 用于读取 XLSX 文件。
    • xmlbuilder 用于构建 XML 数据。
  2. 读取 XLSX 文件:

    • 使用 XLSX.readFile() 方法读取 XLSX 文件。
    • 获取第一个工作表及其数据。
  3. 获取文件名:

    • 使用 path.basename()path.extname() 方法从文件路径中提取文件名(不带扩展名)。
  4. 创建根元素:

    • 使用 xmlbuilder 创建一个根元素,并将其名称设置为文件名。
  5. 遍历数据并创建 XML 元素:

    • 获取第一行作为属性行。
    • 遍历除属性行之外的所有数据行。
    • 为每一行创建一个新的 XML 元素,并使用属性行中的值作为属性名称,使用行数据作为属性值。
  6. 构建 XML 数据:

    • 使用 root.end() 方法构建完整的 XML 数据。
  7. 保存 XML 文件:

    • 使用 fs.writeFile() 方法将 XML 数据写入文件。
    • 文件名是原始文件名加上 '.xml' 扩展名。

使用方法:

  1. 确保您已安装必要的 Node.js 模块:npm install fs path xlsx xmlbuilder
  2. 将代码中的 path/to/input.xlsx 替换为实际的 XLSX 文件路径。
  3. path/to/ 替换为实际的输出文件夹路径。
  4. 运行代码:node your-script-name.js

这将创建一个新的 XML 文件,其根元素为原始 XLSX 文件名,并将转换后的数据保存在指定的输出路径中。

使用 Node.js 将 XLSX 文件转换为 XML 文件,根元素为文件名

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

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