17370845950

JavaScript怎样操作Excel文件_JavaScript中Excel库有哪些好用
JavaScript无法直接读写本地Excel文件,但可通过SheetJS(适合解析与轻量生成)和exceljs(适合高样式导出与模板填充)等库在前端或Node.js后端实现Excel操作。

JavaScript 本身不能直接读写本地 Excel 文件(如 .xlsx、.xls),因为浏览器出于安全限制,无法随意访问文件系统。但通过合适的库和前端+后端配合的方式,可以高效完成 Excel 的生成、解析、修改等操作。

前端常用 Excel 操作库(纯浏览器环境)

这些库不依赖服务器,适合在用户浏览器中解析上传的 Excel 文件,或导出数据为 Excel:

  • SheetJS(xlsx.js):目前最成熟、使用最广的开源库。支持读取(.xlsx、.xls、CSV、ODS 等)和写入(.xlsx 为主),API 清晰,文档完善。可处理公式、样式、多工作表,也支持流式解析大文件。
  • exceljs:功能更偏向“生成高质量 Excel”,支持单元格样式、图片、图表、加密等高级特性。但它在浏览器中需配合 Web Worker 或分块处理大文件,否则容易阻塞主线程。
  • js-xlsx(旧版,已归并入 SheetJS):已停止维护,建议直接用 SheetJS(npm 包名 xlsx)。

后端 Node.js 中操作 Excel

Node.js 环境没有浏览器限制,可直接读写本地或上传的 Excel 文件,适合服务端批量处理:

  • SheetJS(xlsx):同样适用,轻量、兼容性强,适合大多数场景(如导入订单、导出报表)。
  • exceljs:更适合需要精细控制格式、合并单元格、添加图表或导出带样式的管理后台报表。
  • node-xlsx:较轻量,专注基础读写,API 简单,适合快速解析结构化表格数据(如配置表、问卷结果)。

实际使用建议

选型要看具体需求:

  • 只需上传→解析数据→展示?用 SheetJS 就够了,几行代码就能读取内容。
  • 要导出带颜色、边框、冻结窗格的财务报表?优先考虑 exceljs
  • 项目已有大量旧 Excel 模板要填充数据?exceljs 支持基于模板写入;SheetJS 也能读模板再改数据,但样式保留较弱。
  • 处理超大文件(10MB+)?前端用 SheetJS 的 readFile + sheet_to_json 分片,后端用流式读取(如 exceljs 的 stream 模式)。

简单示例:用 SheetJS 解析上传的 Excel

HTML 中放一个文件输入框:

JS 中处理:

document.getElementById('excelFile').addEventListener('change', function(e) {
  const file = e.target.files[0];
  const reader = new FileReader();
  reader.onload = function(e) {
    const data = new Uint8Array(e.target.result);
    const workbook = XLSX.read(data, { type: 'array' });
    const sheetName = workbook.SheetNames[0];
    const jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]);
    console.log(jsonData); // 得到数组形式的表格数据
  };
  reader.readAsArrayBuffer(file);
});

不复杂但容易忽略:记得在项目中安装对应库(npm install xlsxnpm install exceljs),并注意浏览器兼容性(如 IE 不支持某些 API,需 polyfill)。