通过结合我得到的所有研究已经得到了答案。
我发现了很多外部库的组合,用于 sheetjs 的工作xlsx.js
,jszip.js
或者xlsx.full.min.js
只有或者还有xlsx.full.min.js
-FileSaver.js
组合。
我第一次尝试使用xlsx.full.min.js
和FileSaver
组合,它奏效了!我首先下载了两个库并将它们复制到我的/webContent/controller
路径中(是的,我的控制器的路径级别相同)。
接下来是使用sap.ui.define
在 SAPUI5 中定义 3rd 方库在您的控制器中定义它们
您还会注意到我在上面添加了 2 行代码:
/* global XLSX:true */
/* global saveAs:true */
使用这 2 行代码,调用库时会出错。如果要在 js 类之外调用,这些是 JS 的全局名称。
下面是我用来访问上面提到的 2 个 JS 的测试代码:
onExportToExcel: function() {
console.log(XLSX);
var wb = XLSX.utils.book_new();
wb.Props = {
Title: "Sample SheetJS",
Subject: "Test",
Author: "HPC",
CreatedDate: new Date(2018, 5, 19)
};
wb.SheetNames.push("Test Sheet");
var ws_data = [
['HPC', 'TEST', 'call']
]; //a row with 2 columns
var ws = XLSX.utils.aoa_to_sheet(ws_data);
wb.Sheets["Test Sheet"] = ws;
var wbout = XLSX.write(wb, {
bookType: 'xlsx',
type: 'binary'
});
function s2ab(s) {
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
var view = new Uint8Array(buf); //create uint8array as viewer
for (var i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
return buf;
}
saveAs(new Blob([s2ab(wbout)], {
type: "application/octet-stream"
}), 'test.xlsx');
}
输出:
输出导出文件
随时对此提供反馈。可能还有其他更好的方法来实现这一目标。