我的一个 SAPUI5 应用程序表数据需要能够导出到 Excel/电子表格。
sap.ui.core.util.Export
不符合导出数据的标准,尤其是它只写1列数据。
导出数据示例:
自 SAPUI5 1.50 以来,SAP 制作了
sap.ui.export.Spreadsheet
但据他们的一位专家称,该库不适用于 Eclipse 开发工具 (https://answers.sap.com/questions/474315/sapuiexport-missing-in- sap-ui5-version-152.html)
然后有人建议我使用可以将数据导出到电子表格的第 3 方 JS 库,经过研究,我遇到了 SheetJS。我找到这篇关于如何在 SAPUI5 中实现和使用 SheetJS 库代码的文章:Export Excel (.xlsx extension) file with includes responsive table data in SAPUI5.
我的问题: 如何在 Eclipse 上的 SAPUI5 项目中添加外部 JS 库?请注意,我们正在 NetWeaver 服务器上运行我们的 SAPUI5 应用程序。我需要了解根据我所拥有的环境将这些 JS 放在哪里(将它/它们放到 webContent/ 路径是否可以?)以及如何访问它们。
结合我得到的所有研究已经得到了答案。
我发现很多外部库的组合可用于 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
在您的控制器中定义它们
您还会注意到我在上面添加了 2 行代码:
/* global XLSX:true */
/* global saveAs:true */
使用这两行代码,调用库时会出错。如果要在 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');
}
随时就此提供反馈。 可能有其他更好的方法来实现这个目标。
我尝试了 Henry Caparas 提到的上述代码。我收到错误信息
View1.controller.js?eval:20 未捕获类型错误:XLSX.utils.book_new 不是函数
在我犯错的地方能帮我吗