推荐使用SheetJS库导出:通过CDN引入xlsx.min.js,调用table_to_sheet转换表格为工作表,book_new创建工作簿,book_append_sheet添加工作表,writeFile触发下载。

如果您希望在网页中将HTML5页面中的表格数据导出为Excel文件,但浏览器不支持直接生成.xlsx格式或导出内容出现乱码、样式丢失等问题,则可能是由于缺乏兼容性处理或未正确构造数据流。以下是实现该功能的多种方法:
一、使用SheetJS(xlsx.js)库导出
SheetJS是一个功能完备的JavaScript库,支持读写多种电子表格格式,包括XLSX、XLS、CSV等,可在客户端完成数据解析与导出,无需后端参与。
1、通过CDN引入xlsx.min.js文件:。
2、获取目标table元素并转换为工作表:const ws = XLSX.utils.table_to_sheet(document.getElementById("my-table"));。
立即学习“前端免费学习笔记(深入)”;
3、创建工作簿并添加工作表:const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, "Sheet1");。
4、触发下载:XLSX.writeFile(wb, "data.xlsx");。
二、利用Blob和URL.createObjectURL导出CSV
CSV格式兼容性强、实现轻量,适合纯文本数据导出;通过构造逗号分隔字符串并封装为Blob对象,可绕过跨域与MIME限制,实现原生下载。
1、提取table中所有tr元素,遍历每个td/th节点并用逗号拼接每行内容:const rows = Array.from(table.querySelectorAll("tr")).map(tr => Array.from(tr.querySelectorAll("td, th")).map(cell => `"${cell.innerText.replace(/"/g, '""')}"`).join(","));。
2、将所有行合并为完整CSV字符串,并添加UTF-8 BOM头以避免中文乱码:const csvContent = "\uFEFF" + rows.join("\n");。
3、创建Blob对象:const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" });。
标签: javascript excel java jquery html js 前端 node.js json node ht
还木有评论哦,快来抢沙发吧~