深入浅出使用JS/TS轻松搞定Excel与XML互转

 更新时间:2025年07月25日 09:44:17   作者:烛阴  
在一些场景下,程序化的Excel与XML转换能力就显得尤为重要,这篇文章主要为大家详细介绍了如何使用JS/TS轻松搞定Excel与XML互转,感兴趣的小伙伴可以了解下

一、 为什么需要Excel与XML互转?

项目需求:

  • 数据导入导出: 比如我工作时候遇到的fairygui多语言,导出的是xml文件,策划需要Excel文件。
  • 配置管理数据迁移 等,本质就是需求双方出现了对数据格式要求的不一致。

在这些场景下,程序化的Excel与XML转换能力就显得尤为重要。它能帮助我们告别繁琐的手动操作,实现数据的自动化、批量化处理。

二、 核心工具库安装

安装依赖

npm install xlsx xml2js ts-node typescript @types/node xml-js
npm install @types/xml2js @types/xlsx @types/xml-js -D

三、 Excel 转换为 XML

这个过程的核心思想是:读取Excel数据 -> 将数据构造成JavaScript对象 -> 将JavaScript对象转换为XML格式。

3.1 读取Excel数据并转换成Json对象

假设我们有一个名为 users.xlsx 的Excel文件,内容如下:

idnameemail
1Alicealice@163.com
2Bobbob@163.com
3Charliecharlie@163.com

我们可以使用 xlsx 来读取它:

import * as XLSX from 'xlsx';

// 读取Excel文件
const workbook = XLSX.readFile('users.xlsx');

// 获取第一个工作表
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];

// 将工作表转换为JSON对象数组
const jsonData = XLSX.utils.sheet_to_json<{ id: number; name: string; email: string }>(worksheet);

console.log(jsonData);
/*
输出:
[
  { id: 1, name: 'Alice', email: 'Alice@163.com' },
  { id: 2, name: 'Bob', email: 'Bob@163.com' },
  { id: 3, name: 'Charlie', email: 'Charlie@163.com' }
]
*/

3.2 将JSON数据转换为XML

现在我们有了JavaScript对象数组,接下来使用 xml-js 将其转换为XML格式。

import * as convert from 'xml-js';

// 假设 jsonData 来自上一步
const dataForXml = {
    _declaration: { _attributes: { version: '1.0', encoding: 'utf-8' } },
    users: {
        user: jsonData.map((u) => ({
            _attributes: { id: u.id },
            name: { _text: u.name },
            email: { _text: u.email },
        })),
    },
};

const xmlData = convert.js2xml(dataForXml, { compact: true, spaces: 4 });

console.log(xmlData);

输出的XML结果 (output.xml):

<?xml version="1.0" encoding="utf-8"?>
<users>
    <user id="1">
        <name>Alice</name>
        <email>Alice@163.com</email>
    </user>
    <user id="2">
        <name>Bob</name>
        <email>Bob@163.com</email>
    </user>
    <user id="3">
        <name>Charlie</name>
        <email>Charlie@163.com</email>
    </user>
</users>

四、XML 转换为 Excel

反向操作的思路同样清晰:读取XML数据 -> 将XML解析为JavaScript对象 -> 将JavaScript对象生成为Excel文件。

4.1 读取并解析XML数据

假设我们有上一节生成的 output.xml 文件。

import * as fs from 'fs';
import * as convert from 'xml-js';

// 读取XML文件内容
const xmlFile = fs.readFileSync('output.xml', 'utf8');

// 将XML转换为JavaScript对象
const jsonDataFromXml = convert.xml2js(xmlFile, { compact: true }) as any;

// 提取我们需要的用户数据数组
const users = jsonDataFromXml.users.user.map((u: any) => ({
    id: u._attributes.id,
    name: u.name._text,
    email: u.email._text,
}));

console.log(users);
/*
[
  { id: '1', name: 'Alice', email: 'alice@163.com' },
  { id: '2', name: 'Bob', email: 'bob@163.com' },
  { id: '3', name: 'Charlie', email: 'charlie@163.com' }
]
*/

4.2 将JSON数据生成Excel文件

得到JavaScript对象数组后,我们再次请出 xlsx 来完成最后一步。

import * as XLSX from 'xlsx';

// 1. 创建一个新的工作簿
const newWorkbook = XLSX.utils.book_new();

// 2. 将JSON数据转换为工作表
const newWorksheet = XLSX.utils.json_to_sheet(users);

// 3. 将工作表附加到工作簿,并命名为 "Users"
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, 'Users');

// 4. 生成Excel文件并写入磁盘
XLSX.writeFile(newWorkbook, 'users_from_xml.xlsx');

到此这篇关于深入浅出使用JS/TS轻松搞定Excel与XML互转的文章就介绍到这了,更多相关JS Excel与XML互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js实现用户注册协议倒计时的方法

    js实现用户注册协议倒计时的方法

    这篇文章主要介绍了js实现用户注册协议倒计时的方法,是开发会员注册功能时非常实用的技巧,需要的朋友可以参考下
    2015-01-01
  • 浅谈javascript中的prototype和__proto__的理解

    浅谈javascript中的prototype和__proto__的理解

    这篇文章主要介绍了浅谈javascript中的prototype和__proto__的理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • JavaScript屏蔽Backspace键的实现代码

    JavaScript屏蔽Backspace键的实现代码

    这篇文章主要介绍了JavaScript屏蔽Backspace键的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • JavaScript中Map和Set数据结构使用方法详解

    JavaScript中Map和Set数据结构使用方法详解

    这篇文章主要介绍了JavaScript中Map和Set数据结构使用方法的相关资料,Map是一种键值对集合,支持任意类型的键和值,保留插入顺序,并提供多种遍历和操作方法,Set是一种唯一值集合,通过哈希算法保证唯一性,提供添加、删除、检查元素的方法,需要的朋友可以参考下
    2025-03-03
  • 微信小程序数据存储与取值详解

    微信小程序数据存储与取值详解

    这篇文章主要为大家详细介绍了微信小程序数据存储与取值的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 微信小程序实现简单的select下拉框

    微信小程序实现简单的select下拉框

    这篇文章主要为大家详细介绍了微信小程序实现简单的select下拉框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • JavaScript格式化json和xml的方法示例

    JavaScript格式化json和xml的方法示例

    这篇文章主要介绍了JavaScript格式化json和xml的方法,结合实例形式分析了javascript格式化json及格式化xml数据的具体操作技巧,需要的朋友可以参考下
    2019-01-01
  • JavaScript中关于base64的一些事

    JavaScript中关于base64的一些事

    base64 其实是一种编码转换方式, 将 ASCII 字符转换成普通文本, 是网络上最常见的用于传输8Bit字节代码的编码方式之一。这篇文章重点给大家介绍JavaScript中关于base64的一些事,感兴趣的朋友跟随小编一起看看吧
    2019-05-05
  • JavaScript 数据结构之集合创建(2)

    JavaScript 数据结构之集合创建(2)

    这篇文章主要介绍了JavaScript 数据结构之集合创建,上一篇我们介绍了什么是集合,并且手动实现了一个集合的类,本篇基于上篇内容继续深入介绍需要的小伙伴可以参考一下
    2022-04-04
  • js对数组中的数字从小到大排序实现代码

    js对数组中的数字从小到大排序实现代码

    对数组中的数字从小到大排序,很多时候需要用的多,需要的朋友可以参考下
    2012-09-09

最新评论