在 JavaScript (Node.js) 中处理 Excel
现代 Web 开发经常需要以编程方式与电子表格交互。导出报告、从会计系统导入数据、处理大量信息——所有这些都使得在 Node.js 中处理 Excel 成为一项热门任务。在本文中,我们将介绍三种最流行的用于处理 XLSX 格式的库:xlsx、exceljs 和 excel4node。您将了解如何安装它们中的每一个,以及如何创建、编辑和读取 Excel 文件。
xlsx 库 (SheetJS)
xlsx 是在 Node.js 中处理表格最流行且最轻量级的库。它不仅支持 XLSX,还支持 XLS、CSV、ODS 等其他格式。主要优势在于 API 简单且运行速度快。
安装:
npm install xlsx示例:创建并写入 Excel 文件
const XLSX = require('xlsx');
// 创建包含数据的工作表const data = [ { 姓名: '安娜', 年龄: 28, 城市: '莫斯科' }, { 姓名: '伊万', 年龄: 35, 城市: '圣彼得堡' }, { 姓名: '奥尔加', 年龄: 22, 城市: '喀山' }];
const worksheet = XLSX.utils.json_to_sheet(data);const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, '员工');
// 保存文件XLSX.writeFile(workbook, 'employees.xlsx');console.log('文件 employees.xlsx 已创建!');示例:读取现有文件
const workbook = XLSX.readFile('employees.xlsx');const sheetName = workbook.SheetNames[0];const worksheet = workbook.Sheets[sheetName];const jsonData = XLSX.utils.sheet_to_json(worksheet);
console.log('文件中的数据:', jsonData);优点:
- 体积小(压缩后约 50 KB)
- 支持多种格式(XLSX、XLS、CSV、ODS)
- 用于 JSON ↔ 表格转换的简单 API
缺点:
- 格式化功能有限(样式、字体、颜色)
- 处理合并单元格和复杂公式有困难
exceljs 库
exceljs 是一个用于处理 XLSX 文件的高级库。它提供对格式化的完全控制:您可以管理字体、颜色、边框、合并单元格、条件格式,甚至添加图片。
安装:
npm install exceljs示例:创建格式化报告
const ExcelJS = require('exceljs');
async function createReport() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('报告');
// 定义列 worksheet.columns = [ { header: '产品', key: 'product', width: 20 }, { header: '数量', key: 'quantity', width: 15 }, { header: '价格', key: 'price', width: 15 } ];
// 添加数据 worksheet.addRow({ product: '笔记本电脑', quantity: 10, price: 75000 }); worksheet.addRow({ product: '鼠标', quantity: 50, price: 1500 });
// 格式化标题 const headerRow = worksheet.getRow(1); headerRow.font = { bold: true, color: { argb: 'FFFFFFFF' } }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
// 格式化价格列 const priceColumn = worksheet.getColumn(3); priceColumn.numFmt = '#,##0.00';
// 保存 await workbook.xlsx.writeFile('report.xlsx'); console.log('报告已创建并格式化!');}
createReport();示例:读取和修改文件
const workbook = new ExcelJS.Workbook();await workbook.xlsx.readFile('report.xlsx');const worksheet = w