求Nodejs读写多sheet的excel方法

求Nodejs读写多sheet的excel方法

如题,有什么方法可以用nodejs读写excel? 用csv的话,不能写多sheet,用node-xlsx的话,不支持xls格式

4 回复

当然可以!对于需要读写包含多个工作表(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的名称数组。
  • 转换为JSONXLSX.utils.sheet_to_json() 方法将Sheet转换为易于处理的JSON格式。
  • 写入文件XLSX.writeFile() 方法将生成的工作簿写入新的 Excel 文件中。
  • 添加SheetXLSX.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文件的方法。希望对你有所帮助!

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!