【发布时间】:2013-06-12 03:55:18
【问题描述】:
我正在尝试使用此脚本将 html 表保存到 Excel 文件中,它工作正常,但是它没有以正确的名称出现,而是以随机字符串出现。 我不明白为什么。
我称之为:
<input type="button" onclick="tableToExcel('tablename', 'name')" value="Export to Excel">
代码
var tableToExcel = (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) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
【问题讨论】:
-
您将参数 'name' 和 'tablename' 传递给
tableToExcel但函数没有声明任何参数 -
你知道如何解决这个问题吗?我的js不是很好:P
-
@Yuriy Galanter - 变量
tableToExcel设置为一个未命名函数的返回值,该函数在页面加载时立即执行。返回值是对匿名函数function(table,name)的引用,所以当你调用tableToExcel时,实际上是这个函数被执行。 -
@TimWilliams 是的,已经想通了,现在正在想办法回答这个问题
标签: javascript html excel html-table