HTML 页面中的表格经常用于展示订单、用户、统计数据等业务信息。当数据量较大时,仅在浏览器中查看并不方便,很多场景还需要将表格保存下来进行二次编辑、统计或打印。将 HTML 表格导出为 Excel 文件,是前端开发中比较常见的需求。
根据项目复杂程度,可以采用原生 JavaScript、Blob、SheetJS 等方式实现。其中,简单表格可以直接利用浏览器提供的能力完成导出;如果涉及多个工作表、单元格合并、复杂样式或大量数据,则更适合使用专业的 Excel 处理库。
一、使用原生 JavaScript 导出 HTML 表格
对于结构比较简单的 例如页面中存在如下表格: JavaScript 可以这样处理: 这种方式的核心思路并不是生成真正的 XLSX 二进制文件,而是将 HTML 表格封装成 Excel 能够识别的内容,然后使用 对于内部管理系统、简单数据列表等场景,这种方案代码量很少,使用起来比较方便。 如果不需要额外的 Excel XML 声明,也可以使用更加简单的实现方式: 这种方式特别适合快速实现“点击按钮导出当前表格”的功能。 不过需要注意, 如果项目对 Excel 导出的要求较高,推荐使用 SheetJS。它能够将 HTML 表格转换为工作簿,并进一步生成 XLSX 文件。 首先引入 SheetJS:,可以直接将 HTML 表格内容转换为 Excel 可识别的数据格式,再通过 Blob 创建文件并触发下载。
id="dataTable" border="1">
姓名
年龄
部门
张三
28
技术部
李四
32
产品部
王五
26
运营部
function exportExcel() {
const table = document.getElementById('dataTable');
const html = `
${table.outerHTML}
`;
const blob = new Blob([html], {
type: 'application/vnd.ms-excel'
});
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = '数据表.xls';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(url);
}.xls 扩展名进行下载。二、直接将表格转换为 Blob 文件
function exportTableToExcel() {
const table = document.getElementById('dataTable');
const html = `
${table.outerHTML}
`;
const blob = new Blob([html], {
type: 'application/vnd.ms-excel;charset=utf-8'
});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = '表格数据.xls';
a.click();
URL.revokeObjectURL(url);
}.xls 并不意味着真正生成了传统 Excel 二进制格式。实际上文件内容仍然是 HTML,因此这种方法更适合简单场景,而不适合作为复杂 Excel 文件生成方案。三、使用 SheetJS 导出真正的 Excel 文件