【发布时间】:2014-08-29 11:30:38
【问题描述】:
我在网页上有一个 SlickGrid,我正在尝试添加一个按钮来调用函数 CreateXLSX()。当我在 Main.jade 中编辑代码时,我输入:
input(type = 'button', value = 'SaveXLSX', onclick = 'createXLSX();')
createXLSX() 函数是:
var inputData = getData();
var ws_name = "SheetJS";
var wb = Workbook(), ws = sheet_from_array_of_arrays(data);
wb.SheetNames.push(ws_name);
wb.Sheets[ws.name] = ws;
var result = XLSX.write(wb, {bookType: 'xlsx',
bookSST:false, type: 'binary'});
saveAs(new Blob([s2ab(result)],
{type: "application/octet-stream"}), "Test.xlsx);
}
当我在 FireBug 的控制台窗口中执行 createXLSX() 时,解析工作正常。它会创建一个包含网格中所有数据的 .xlsx 文件。但是当我使用按钮时,我得到了错误:
wb.Workbook is undefined
当我刷新页面时,打开/保存控制台会弹出,就好像 .xlsx 文件已创建一样,尽管出现了错误。我需要在单击按钮时使用代码来提示用户,就像我不使用控制台运行该功能时的方式一样。 有谁知道我为什么会收到这个错误?
【问题讨论】:
-
你少了一个双引号(结尾是“Test.xlsx...)。你还添加了FileSaver.js吗?查看sheetjs.com/demos/writexlsx.html的来源
-
@Nirk 我确实添加了 FileSaver.js,并在 Test.xlsx 之后添加了另一个双引号。我想当我在没有启用 Firebug 的情况下运行程序时,它运行正常。也许 Firebug 认为这是一个致命的错误或什么的。不过感谢您的反馈!
标签: javascript html blob pug slickgrid