JavaScript 如何做导出 Excel
在日常做网页时,经常会遇到需要把页面里的表格数据,比如员工考勤、商品订单、客户名单,导出成Excel文件的需求。很多人以为这得靠后端帮忙生成文件,再让用户下载,其实用前端的JavaScript代码就能直接完成,不用额外和服务器交互,操作起来很简单。
先搞懂核心:用什么工具做?
JavaScript本身没有直接生成Excel的能力,但有成熟的轻量工具库可以用,最常用的就是SheetJS(也叫xlsx)。它就像个Excel“小助手”,能把普通的数组、对象数据,转成符合Excel格式的文件,还能处理简单的格式,比如合并单元格、设置列宽,足够应付大多数日常需求。

这个工具库体积很小,压缩后才几十KB,不会让网页加载变慢,完全不用怕影响用户体验。
三步实现:从数据到下载
假设我们要导出一份“月度零食销量表”,页面里已经有了数组格式的原始数据,接下来用三步就能完成导出,每一步都有具体的生活化例子。
第一步:引入工具库
不用自己搭建复杂环境,直接在网页的<script>标签里加一行CDN地址就行,就像给网页装个小插件:
<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
这一步不用写复杂逻辑,相当于把“Excel小助手”请到了页面里。
第二步:把数据转成Excel能识别的格式
我们的原始数据是个简单的数组,比如:
`const snackData = [
{ 月份: "1月", 零食: "薯片", 销量: 120 },
{ 月份: "1月", 零食: "巧克力", 销量: 85 },
{ 月份: "2月", 零食: "薯片", 销量: 150 },
];`
SheetJS能直接把这种对象数组转成Excel的“工作表”,就像把零散的零食小票,整理成了店里的记账单:
const worksheet = XLSX.utils.json_to_sheet(snackData);
如果要加表头,比如“月份”“零食”“销量”,这个函数会自动把对象的键作为表头,刚好对应我们需要的内容。
第三步:生成文件并触发下载
最后一步是把工作表转成Excel文件,再模拟用户点击下载按钮,完成导出。就像整理好记账单后,点一下打印按钮存成文件:
`const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "销量表");
XLSX.writeFile(workbook, "月度零食销量.xlsx");`
这里的“销量表”是Excel里的工作表名称,文件名可以自己改,比如改成“2025年1月零食销量.xlsx”,清晰明了。
常见小问题:踩过的坑这样解决
实际用的时候,偶尔会遇到小问题,不用慌,都是能轻松解决的:
比如导出的Excel打开后乱码,大多是因为文件格式不对,直接用.xlsx格式就不会有问题,别用旧的.xls格式;如果要导出更复杂的内容,比如带图片或公式,这个工具也能处理,但日常的表格数据用上面的方法完全够;如果是在Vue、React这类框架里用,只要先安装xlsx包,再引入就行,和普通网页的用法差不多。
用JavaScript导出Excel,不用后端配合,代码简单易懂,还能满足绝大多数中小网站的导出需求。不管是做个人博客的统计工具,还是企业内部的小系统,这套方法都能快速上手,帮你省去不少麻烦。