求Nodejs读写多sheet的excel方法
求Nodejs读写多sheet的excel方法
如题,有什么方法可以用nodejs读写excel? 用csv的话,不能写多sheet,用node-xlsx的话,不支持xls格式
当然可以!对于需要读写包含多个工作表(sheet)的Excel文件的需求,可以使用xlsx
库。xlsx
库是一个功能强大的工具,支持读写 .xlsx
文件,并且可以处理 .xls
文件通过转换为 .xlsx
格式来实现。
安装 xlsx
库
首先,你需要安装 xlsx
库。可以通过 npm 来安装:
npm install xlsx
示例代码
1. 读取多Sheet的Excel文件
以下是如何使用 xlsx
库读取一个包含多个Sheet的Excel文件:
const XLSX = require('xlsx');
// 读取Excel文件
let workbook = XLSX.readFile('example.xlsx');
// 获取所有Sheet名称
let sheetNames = workbook.SheetNames;
// 遍历每个Sheet并打印数据
sheetNames.forEach(sheetName => {
let worksheet = workbook.Sheets[sheetName];
let data = XLSX.utils.sheet_to_json(worksheet);
console.log(`Sheet Name: ${sheetName}`);
console.log(data);
});
2. 写入多Sheet的Excel文件
接下来,我们看看如何创建一个包含多个Sheet的新Excel文件:
const XLSX = require('xlsx');
// 创建一个新的工作簿
let workbook = XLSX.utils.book_new();
// 数据
let dataSheet1 = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 }
];
let dataSheet2 = [
{ product: 'Apple', price: 1.5 },
{ product: 'Banana', price: 0.75 }
];
// 将数据添加到Sheet
let worksheet1 = XLSX.utils.json_to_sheet(dataSheet1);
let worksheet2 = XLSX.utils.json_to_sheet(dataSheet2);
// 添加Sheet到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet1, 'Sheet1');
XLSX.utils.book_append_sheet(workbook, worksheet2, 'Sheet2');
// 写入文件
XLSX.writeFile(workbook, 'output.xlsx');
解释
- 读取文件:
XLSX.readFile()
方法用于读取 Excel 文件。它返回一个包含所有Sheet信息的工作簿对象。 - 获取Sheet名称:
workbook.SheetNames
返回所有Sheet的名称数组。 - 转换为JSON:
XLSX.utils.sheet_to_json()
方法将Sheet转换为易于处理的JSON格式。 - 写入文件:
XLSX.writeFile()
方法将生成的工作簿写入新的 Excel 文件中。 - 添加Sheet:
XLSX.utils.book_append_sheet()
方法用于向工作簿中添加新的Sheet。
通过这种方式,你可以轻松地使用 Node.js 读写包含多个Sheet的Excel文件。
前段时间也有同样的问题,现在稍微好一些的模块貌似只有node-xlsx了
请问 能让它支持 xls格式么
要实现Node.js中读写包含多个Sheet的Excel文件(包括.xlsx
和.xls
格式),你可以使用xlsx
库。这个库不仅可以处理.xlsx文件,还可以通过一些额外的配置来处理.xls文件。下面我将分别介绍如何使用xlsx
库进行读取和写入多Sheet的Excel文件。
安装xlsx
库
首先,你需要安装xlsx
库。可以使用npm命令:
npm install xlsx
示例代码:读取和写入多Sheet的Excel文件
写入多Sheet的Excel文件
const XLSX = require('xlsx');
// 创建一个工作簿对象
const workbook = XLSX.utils.book_new();
// 创建第一个Sheet的数据
const data1 = [
["姓名", "年龄"],
["张三", 25],
["李四", 30]
];
// 创建第二个Sheet的数据
const data2 = [
["产品", "价格"],
["手机", 2999],
["电脑", 6999]
];
// 将数据转换为worksheet对象
const worksheet1 = XLSX.utils.aoa_to_sheet(data1);
const worksheet2 = XLSX.utils.aoa_to_sheet(data2);
// 将Sheet添加到工作簿中
XLSX.utils.book_append_sheet(workbook, worksheet1, 'Sheet1');
XLSX.utils.book_append_sheet(workbook, worksheet2, 'Sheet2');
// 导出文件
XLSX.writeFile(workbook, 'example.xlsx');
这段代码创建了一个包含两个Sheet的Excel文件,分别命名为"Sheet1"和"Sheet2",并将其保存为example.xlsx
文件。
读取多Sheet的Excel文件
const XLSX = require('xlsx');
// 读取Excel文件
const workbook = XLSX.readFile('example.xlsx');
// 获取所有Sheet的名称
const sheetNames = workbook.SheetNames;
// 遍历每个Sheet并打印数据
sheetNames.forEach(sheetName => {
const worksheet = workbook.Sheets[sheetName];
const data = XLSX.utils.sheet_to_json(worksheet, {header: 1});
console.log(`Sheet: ${sheetName}`);
console.log(data);
});
这段代码读取一个名为example.xlsx
的Excel文件,并输出所有Sheet中的数据。sheet_to_json
函数将工作表转换为JSON格式,其中{header: 1}
表示将第一行作为表头。
以上就是使用xlsx
库在Node.js中读写多Sheet的Excel文件的方法。希望对你有所帮助!