ExcelJS核心功能解析:读写XLSX文件从未如此简单

发布时间:2026/6/4 23:11:20
ExcelJS核心功能解析:读写XLSX文件从未如此简单
ExcelJS核心功能解析读写XLSX文件从未如此简单【免费下载链接】exceljsExcel Workbook Manager项目地址: https://gitcode.com/gh_mirrors/ex/exceljs你是否还在为处理Excel文件而烦恼手动编辑大量数据耗时费力复杂的格式转换让人头疼现在有了ExcelJS这些问题都将迎刃而解。ExcelJS是一个功能强大的JavaScript库能够轻松读取、操作和写入XLSX和JSON格式的电子表格数据及样式。读完本文你将能够快速上手ExcelJS掌握工作簿和工作表的基本操作实现数据的高效读写以及了解如何处理单元格样式和格式。什么是ExcelJSExcelJS是一个开源的JavaScript库专为处理电子表格文件而设计。它可以在Node.js环境和浏览器中运行提供了丰富的API让开发者能够轻松地创建、修改和解析Excel文件。无论是生成报表、处理数据分析结果还是实现Excel文件的导入导出功能ExcelJS都能胜任。该项目的源代码托管在https://link.gitcode.com/i/c4c9e1c14cbd0c46dc1dfabeabd7463a你可以通过克隆仓库来获取最新版本git clone https://link.gitcode.com/i/c4c9e1c14cbd0c46dc1dfabeabd7463a.git安装ExcelJS非常简单只需使用npm命令npm install exceljs核心功能概览ExcelJS提供了一系列强大的功能使其成为处理Excel文件的理想选择。以下是其核心功能的简要概述创建和管理工作簿可以新建工作簿设置工作簿属性如创建者、修改日期等。工作表操作添加、删除、重命名工作表设置工作表属性如标签颜色、网格线显示等。数据读写支持读写单元格数据包括文本、数字、日期、公式等多种类型。单元格样式可以设置单元格的字体、颜色、对齐方式、边框、填充等样式。数据验证为单元格添加数据验证规则确保输入数据的有效性。图表支持虽然目前支持有限但可以创建基本的图表。流式处理支持大型Excel文件的流式读写提高性能并减少内存占用。快速上手创建你的第一个Excel文件让我们通过一个简单的示例来了解如何使用ExcelJS创建一个Excel文件。首先我们需要引入ExcelJS库const ExcelJS require(exceljs);接下来创建一个新的工作簿Workbookconst workbook new ExcelJS.Workbook();工作簿是Excel文件的容器一个工作簿可以包含多个工作表Worksheet。现在让我们添加一个工作表const worksheet workbook.addWorksheet(我的第一个工作表);我们可以为工作表设置一些属性例如标签颜色worksheet.properties.tabColor { argb: FFC0000 }; // 红色标签现在我们可以向工作表中添加数据了。ExcelJS提供了多种添加数据的方式最简单的是直接设置单元格的值worksheet.getCell(A1).value Hello; worksheet.getCell(B1).value ExcelJS; worksheet.getCell(A2).value 这是一个; worksheet.getCell(B2).value 示例;除了单个单元格赋值我们还可以通过行对象来添加一行数据const row worksheet.addRow([姓名, 年龄, 邮箱]); row.font { bold: true }; // 设置表头字体为粗体然后继续添加数据行worksheet.addRow([张三, 30, zhangsanexample.com]); worksheet.addRow([李四, 25, lisiexample.com]); worksheet.addRow([王五, 35, wangwuexample.com]);添加完数据后我们可能需要调整列宽以确保内容完整显示worksheet.getColumn(A).width 10; worksheet.getColumn(B).width 6; worksheet.getColumn(C).width 20;最后将工作簿写入文件workbook.xlsx.writeFile(示例.xlsx) .then(function() { console.log(文件创建成功); }) .catch(function(error) { console.log(创建文件时出错, error); });运行这段代码你将得到一个名为示例.xlsx的Excel文件其中包含了你刚刚添加的数据。深入了解工作簿与工作表工作簿Workbook工作簿是Excel文件的顶层对象它包含了所有的工作表和相关信息。在ExcelJS中Workbook类负责管理工作簿的各种属性和操作。查看lib/doc/workbook.js文件我们可以看到Workbook类的主要结构和方法。它包含了工作表管理、属性设置、文件读写等核心功能。创建工作簿后你可以设置一些基本属性workbook.creator ExcelJS; workbook.lastModifiedBy ExcelJS User; workbook.created new Date(); workbook.modified new Date();工作簿还支持设置一些高级属性如计算属性workbook.calcProperties.fullCalcOnLoad true; // 加载时强制计算所有公式工作表Worksheet工作表是实际存储和展示数据的地方。一个工作簿可以包含多个工作表每个工作表都是独立的可以有自己的格式和数据。添加工作表时除了指定名称还可以设置一些初始选项const worksheet workbook.addWorksheet(销售数据, { properties: { tabColor: { argb: FF00FF00 } }, // 绿色标签 views: [{ showGridLines: false }] // 隐藏网格线 });工作表提供了多种访问和操作单元格的方法// 通过单元格地址访问 const cellA1 worksheet.getCell(A1); // 通过行号和列号访问注意行号从1开始列号从1开始 const cellB2 worksheet.getRow(2).getCell(2); // 设置单元格值 cellA1.value 销售额; cellB2.value 1000;你还可以对整行或整列进行操作// 获取第3行 const row3 worksheet.getRow(3); row3.values [产品A, 500, 1500]; // 设置整行值 // 获取B列 const columnB worksheet.getColumn(B); columnB.numFmt $#,##0.00; // 设置B列为货币格式数据操作读写与格式化读取Excel文件ExcelJS不仅可以创建新的Excel文件还可以读取现有的Excel文件并对其进行操作。以下是一个读取Excel文件的示例const workbook new ExcelJS.Workbook(); workbook.xlsx.readFile(现有文件.xlsx) .then(function() { // 获取第一个工作表 const worksheet workbook.getWorksheet(1); // 遍历工作表中的行 worksheet.eachRow(function(row, rowNumber) { console.log(第 rowNumber 行: , row.values); }); }) .catch(function(error) { console.log(读取文件时出错, error); });对于大型Excel文件建议使用流式读取来提高性能const workbook new ExcelJS.stream.xlsx.WorkbookReader(大型文件.xlsx); for await (const worksheetReader of workbook) { console.log(工作表名称, worksheetReader.name); for await (const row of worksheetReader) { // 处理每一行数据 console.log(row.values); } }单元格数据类型ExcelJS支持多种单元格数据类型包括文本String数字Number日期Date布尔值Boolean公式Formula超链接Hyperlink富文本Rich Text以下是设置不同数据类型的示例// 文本 worksheet.getCell(A1).value Hello ExcelJS; // 数字 worksheet.getCell(A2).value 12345; // 日期 worksheet.getCell(A3).value new Date(2023, 0, 1); // 2023年1月1日 worksheet.getCell(A3).numFmt yyyy-mm-dd; // 设置日期格式 // 布尔值 worksheet.getCell(A4).value true; // 公式 worksheet.getCell(A5).value { formula: SUM(B2:B10), result: 0 }; // 超链接 worksheet.getCell(A6).value { text: 访问ExcelJS官网, hyperlink: https://exceljs.github.io/exceljs/ }; // 富文本 worksheet.getCell(A7).value { richText: [ { text: 这是, font: { size: 12 } }, { text: 富文本, font: { size: 14, bold: true, color: { argb: FFFF0000 } } }, { text: 示例, font: { size: 12 } } ] };单元格样式ExcelJS提供了丰富的样式设置选项可以让你美化你的Excel表格。以下是一些常用的样式设置const cell worksheet.getCell(A1); // 设置字体 cell.font { name: Arial, size: 12, bold: true, italic: false, underline: false, color: { argb: FF000000 } // 黑色 }; // 设置填充 cell.fill { type: pattern, pattern: solid, fgColor: { argb: FFFFFF00 } // 黄色 }; // 设置对齐方式 cell.alignment { vertical: middle, horizontal: center, wrapText: true // 自动换行 }; // 设置边框 cell.border { top: { style: thin, color: { argb: FF000000 } }, left: { style: thin, color: { argb: FF000000 } }, bottom: { style: thin, color: { argb: FF000000 } }, right: { style: thin, color: { argb: FF000000 } } };你还可以将样式应用到整行或整列// 应用样式到整行 worksheet.getRow(1).font { bold: true }; // 应用样式到整列 worksheet.getColumn(A).alignment { horizontal: right };高级功能数据验证与条件格式数据验证数据验证可以帮助确保用户输入的数据符合特定的规则。ExcelJS支持多种数据验证类型// 设置整数验证 worksheet.getCell(A1).dataValidation { type: whole, operator: between, formulae: [1, 100], showErrorMessage: true, errorTitle: 输入错误, error: 请输入1到100之间的整数 }; // 设置列表验证 worksheet.getCell(B1).dataValidation { type: list, formulae: [选项1,选项2,选项3], showDropDown: true };条件格式条件格式可以根据单元格的值自动应用不同的样式// 大于100的单元格显示为红色 worksheet.getCell(C1).conditionalFormatting { rules: [ { type: cellIs, operator: greaterThan, formulae: [100], style: { font: { color: { argb: FFFF0000 } } } } ] }; // 数据条 worksheet.getCell(D1).conditionalFormatting { rules: [ { type: dataBar, direction: leftToRight, color: { argb: FF00FF00 }, showValue: true } ] };性能优化处理大型Excel文件当处理大型Excel文件时内存占用和性能可能会成为问题。ExcelJS提供了流式API来解决这个问题流式写入const workbook new ExcelJS.stream.xlsx.WorkbookWriter({ filename: 大型文件.xlsx }); const worksheet workbook.addWorksheet(大型数据表); // 设置列 worksheet.columns [ { header: ID, key: id, width: 10 }, { header: 名称, key: name, width: 30 }, { header: 值, key: value, width: 15 } ]; // 生成大量数据 for (let i 1; i 100000; i) { worksheet.addRow({ id: i, name: 项目 ${i}, value: Math.random() * 1000 }).commit(); } worksheet.commit(); workbook.commit() .then(() { console.log(大型文件生成完成); }) .catch(err { console.error(生成文件时出错:, err); });流式读取const workbook new ExcelJS.stream.xlsx.WorkbookReader(大型文件.xlsx); let rowCount 0; workbook.on(worksheet, worksheet { console.log(工作表名称:, worksheet.name); worksheet.on(row, row { rowCount; // 处理行数据 if (rowCount % 10000 0) { console.log(已处理 ${rowCount} 行); } }); worksheet.on(done, () { console.log(工作表 ${worksheet.name} 处理完成); }); }); workbook.read() .then(() { console.log(所有工作表处理完成共处理 ${rowCount} 行); }) .catch(err { console.error(读取文件时出错:, err); });实际应用场景ExcelJS可以应用于多种场景例如报表生成根据数据库数据动态生成Excel报表。数据导入导出提供Web应用中的Excel数据导入导出功能。数据处理与分析读取Excel数据进行分析和处理。模板生成基于模板创建标准化的Excel文件。以下是一个简单的数据导入导出示例// 导出数据到Excel function exportToExcel(data, filename) { const workbook new ExcelJS.Workbook(); const worksheet workbook.addWorksheet(数据); // 设置表头 if (data.length 0) { worksheet.addRow(Object.keys(data[0])); // 添加数据 data.forEach(item { worksheet.addRow(Object.values(item)); }); } return workbook.xlsx.writeBuffer().then(buffer { const blob new Blob([buffer], { type: application/octet-stream }); const url URL.createObjectURL(blob); const a document.createElement(a); a.href url; a.download filename; a.click(); URL.revokeObjectURL(url); }); } // 导入Excel数据 function importFromExcel(file) { const workbook new ExcelJS.Workbook(); return workbook.xlsx.read(file) .then(() { const worksheet workbook.getWorksheet(1); const data []; let headers []; worksheet.eachRow((row, rowNumber) { if (rowNumber 1) { headers row.values; } else { const rowData {}; row.values.forEach((value, colNumber) { if (colNumber 0 headers[colNumber]) { rowData[headers[colNumber]] value; } }); data.push(rowData); } }); return data; }); }总结与展望ExcelJS是一个功能强大且灵活的库为JavaScript开发者提供了处理Excel文件的全方位解决方案。无论是简单的数据读写还是复杂的格式设置和数据处理ExcelJS都能胜任。通过本文的介绍你应该已经掌握了ExcelJS的基本用法和一些高级功能。但ExcelJS的功能远不止于此还有许多高级特性等待你去探索如图表、数据透视表等。随着Web技术的发展ExcelJS也在不断进化。未来我们可以期待它提供更多的功能和更好的性能成为Web端Excel处理的首选库。现在是时候动手尝试使用ExcelJS来解决你实际工作中的Excel处理问题了。无论是创建复杂的报表还是实现数据的导入导出ExcelJS都将成为你的得力助手。如果你觉得本文对你有帮助请点赞、收藏并关注我们以获取更多关于ExcelJS和其他前端技术的实用教程。你在使用ExcelJS时有什么心得或问题吗欢迎在评论区留言分享【免费下载链接】exceljsExcel Workbook Manager项目地址: https://gitcode.com/gh_mirrors/ex/exceljs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考