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 简单,适合快速解析结构化表格数据(如配置表、问卷结果)。
实际使用建议
选型要看具体需求:
立即学习“Java免费学习笔记(深入)”;
- 只需上传→解析数据→展示?用 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 xlsx 或 npm install exceljs),并注意浏览器兼容性(如 IE 不支持某些 API,需 polyfill)。










