js导出网页table为Excel文件的问题

WhiteDouglas 2017-09-12 11:42:00
通过下面这种js脚本导出的Excel文件在保存到本地并打开时,office会弹出提示:

请问如何修改js脚本才能解决弹出提示的问题?另外最好能通过js生成xlsx后缀的文件~
<!DOCTYPE>
<html>
<head>
<title>Excel Test</title>
</head>

<body>
<div style="width:100%;padding:40px;">
Excel Test
</div>
<table id="excel">
<tr>
<td>Name</td>
<td>Age</td>
<td>Gender</td>
</tr>
<tr>
<td>Young</td>
<td>24</td>
<td>Male</td>
</tr>
<tr>
<td>Even</td>
<td>23</td>
<td>Female</td>
</tr>
<tr>
<td>Leon</td>
<td>25</td>
<td>Male</td>
</tr>
</table>
</body>
<div style="width:200px;margin:auto;text-align:center;">
<button onclick="ok()">导出</button>
</div>

<script>
var ok = (function () {
var uri = 'data:application/vnd.ms-excel;base64,',
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"><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>',
base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) },
format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
return function (table, name) {
var tables = document.getElementById('excel');
var ctx = { worksheet: name || 'Worksheet', table: tables.innerHTML }
window.location.href = uri + base64(format(template, ctx));
}
})();

function ExportSupplierMonthlyData() {
try {
tableToExcel();
} catch (err) {
bootbox.alert('没有数据,导出失败');
}
}
</script>
</html>
...全文
743 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45411740 2021-02-23
  • 打赏
  • 举报
回复
可以用jquery.table2excel.min.js来实现导出成excel,非常方便,但是目前好像只兼容谷歌
wangwky 2020-09-15
  • 打赏
  • 举报
回复
相同问题+1
一夜朝阳 2017-09-21
  • 打赏
  • 举报
回复
楼主这个问题你现在解决了吗,我也遇到同样的问题,可以请教一下吗

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧