在 JavaScript (Node.js) 中处理 Excel:库与工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 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                    

推荐