ExcelJS读取与写入实战指南 | 前端高效处理Excel的完整技巧

大家好,我是第八哥,作为一名做了十年互联网开发的老兵,我一直都在寻找一种既好用又灵活的方式,来解决前端对Excel文件的读取、操作与写入需求。ExcelJS 算是我这几年最常用的工具之一,不管是在浏览器端还是 Node 端,都能轻松搞定各种复杂的 Excel 任务。

什么是 ExcelJS?为什么值得用?

ExcelJS 是一个纯 JavaScript 的 Excel 操作库,可以在前端和 Node 环境中使用。我喜欢它的原因很简单:API 清晰、功能强、兼容性好,还用起来不费脑子。对于需要自定义格式、数据导出、模板填充的项目来说,它基本能全覆盖。

核心功能包括: 读取 Excel、写入 Excel、设置样式、合并单元格、操作多工作表、导入模板等。

ExcelJS 的优势与不足

优点方面: 第一,它无需依赖 Excel 环境;第二,API 语义化强;第三,多端通用;第四,支持丰富的格式设置,适合报表类需求。

不足方面: 文件写入对大体量数据性能一般;另外,复杂公式依然有局限,这点在财务类项目中要特别注意。

如何在项目中快速使用 ExcelJS?

不管是 React、Vue 还是 Node 工程,都只需要一行命令:

安装 ExcelJS:


    
    
    
  npm install exceljs

安装好之后,就可以开始你的 Excel 编程之旅了。

示例一:读取 Excel 文件

很多场景下,我们的任务并不是生成 Excel,而是读取并处理用户上传的 Excel 文件。这里给你一个最常用的读取示例:


    
    
    
  import ExcelJS from 'exceljs';

async
 function readExcel(file) {
    const
 workbook = new ExcelJS.Workbook();
    const
 buffer = await file.arrayBuffer();
    await
 workbook.xlsx.load(buffer);

    const
 sheet = workbook.getWorksheet(1);
    const
 result = [];

    sheet.eachRow((row, rowIndex) => {
        result.push(row.values);
    });

    return
 result;
}

这个示例适合前端文件上传场景,比如后台管理系统的数据导入功能。

示例二:生成 Excel 并导出

ExcelJS 最强大的地方之一,就是能够自由生成 Excel。你可以控制工作表、单元格格式、边框、颜色甚至合并单元格。


    
    
    
  import ExcelJS from 'exceljs';

async
 function exportExcel() {
    const
 workbook = new ExcelJS.Workbook();
    const
 sheet = workbook.addWorksheet('用户数据');

    sheet.addRow(['ID', '姓名', '年龄']);
    sheet.addRow([1, '王小明', 28]);
    sheet.addRow([2, '李小红', 26]);

    sheet.getRow(1).font = { bold: true };
    sheet.columns = [
        { width: 10 },
        { width: 20 },
        { width: 10 }
    ];

    const
 buffer = await workbook.xlsx.writeBuffer();
    const
 blob = new Blob([buffer]);
    const
 link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.download = '用户数据.xlsx';
    link.click();
}

这段代码适合在前端直接生成并下载 Excel 文件,常见于报表导出、数据备份等需求。

示例三:设置样式与合并单元格

如果你需要更美观的报表,可以利用 ExcelJS 的样式支持,比如背景色、边框或者合并单元格。


    
    
    
  sheet.mergeCells('A1:C1');
const
 title = sheet.getCell('A1');
title.value = '销售报表';
title.alignment = { horizontal: 'center' };
title.font = { size: 16, bold: true };

这些配置让你可以做出接近模板化的 Excel 报表,非常适合运营类系统或BI系统导出。

性能与实战建议

我在长期使用 ExcelJS 的过程中,总结了几个小技巧:

1. 大数据优先用流式写入。 ExcelJS 支持流式写入,可以减少内存占用。

2. 样式越多性能越差。 尽量减少不必要的边框、颜色操作。

3. 模板比动态生成表头更高效。 尤其是复杂报表,建议先做 Excel 模板,再按单元格填值。

场景适配:浏览器 vs Node

在浏览器端,ExcelJS 适合文件导入导出、轻量报表生成;在 Node 端,它更适合定时脚本、后台批量生成 Excel、生成带格式的合同或数据报表。

你可以根据运行环境搭配 Buffer、ReadStream、WriteStream,灵活程度可谓拉满。

ExcelJS 适合哪些项目?

如果你的项目中存在数据导出、Excel 表单处理、报表生成、用户上传数据解析等场景,那么 ExcelJS 基本就是首选。它足够灵活,也足够简单,无论你是前端工程师还是 Node 全栈,都能轻松驾驭。

总结

ExcelJS 是一个强大且易用的 Excel 操作库,不仅支持多端使用,还能帮你快速处理复杂数据。灵活的样式、完善的 API、优雅的导入导出能力,让它成为前端与 Node 项目的必备工具。如果你正在寻找更高效的 Excel 解决方案,ExcelJS 绝对值得尝试。

上一篇 html2pdf.js使用与配置详解 | 前端页面一键生成高质量PDF的实战指南 下一篇 返回列表

评论

暂不支持评论