修改 HTML 表格导出 Excel 时的文件名
本文旨在解决将 HTML 表格导出为 Excel 文件时,默认文件名总是 “download” 的问题。通过修改 JavaScript 代码,利用 <a> 标签的 download 属性,允许用户自定义导出的 Excel 文件名。
核心思路:
核心在于创建一个 <a> 标签,设置其 href 属性为 Excel 数据的 Data URI,然后设置 download 属性为期望的文件名,最后模拟点击该链接,触发下载。
修改后的 JavaScript 代码:
立即学习“前端免费学习笔记(深入)”;
function tableToExcel(table, name) { var uri = 'data:application/vnd.ms-excel;base64,'; var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'; var base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }; var format = function(s, c) { return s.replace(/{(w+)}/g, function(m, p) { return c[p]; }) }; if (!table.nodeType) table = document.getElementById(table); var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }; var a = document.createElement('a'); a.href = uri + base64(format(template, ctx)); a.download = name + '.xls'; // 设置下载的文件名 a.click(); // 触发下载 }
代码解释:
- a.download = name + ‘.xls’;: 这行代码是关键。它创建了一个 <a> 标签,并将 download 属性设置为 name + ‘.xls’。name 参数是传递给 tableToExcel 函数的文件名,.xls 是 Excel 文件的扩展名。 download 属性告诉浏览器,当用户点击链接时,应该下载链接指向的资源,并使用指定的文件名。
- a.click();: 这行代码模拟点击 <a> 标签,触发下载操作。
使用方法:
在 HTML 中,你可以使用一个按钮来触发导出功能:
<button onclick="tableToExcel('yourTableId', 'MyExcelFile')">导出到 Excel</button> <table id="yourTableId"> <thead> <tr> <th>Header 1</th> <th>Header 2</th> </tr> </thead> <tbody> <tr> <td>Data 1</td> <td>Data 2</td> </tr> </tbody> </table>
将 yourTableId 替换为你的表格的 ID,MyExcelFile 替换为你想要的文件名。 当点击按钮时,将会下载一个名为 MyExcelFile.xls 的 Excel 文件。
注意事项:
- 确保你的 HTML 表格有一个唯一的 ID。
- name 参数是导出的文件名,不包含扩展名。 函数会自动添加 .xls 扩展名。
- 此方法依赖于浏览器对 Data URI 和 download 属性的支持。 大多数现代浏览器都支持这些特性。
总结:
通过使用 JavaScript 创建一个 <a> 标签,并设置其 download 属性,我们可以轻松地控制将 HTML 表格导出到 Excel 时的文件名。 这种方法简单易用,并且兼容大多数现代浏览器,是解决 Excel 导出文件名问题的有效方案。
javascript excel java html node 浏览器 app office win JavaScript html href excel