我的一个SAPUI5应用程序表数据有一个要求可以导出到excel /电子表格。 SAPUI5当前可用的标准方法 sap / ui / core / util / Export 不符合导出数据的标准,特别是它只在1列中写入数据。 样本导出数据
这是一个好消息,SAP最终制作了sap.ui.export(1.50版本),其中显然将表的每个数据完全导出到电子表格,根据他们的一个expers,所述库不可用用于Eclipse开发工具。 https://answers.sap.com/questions/474315/sapuiexport-missing-in-sap-ui5-version-152.html
然后建议我使用可以将数据导出到电子表格的第三方JS库,在研究时,我遇到了sheetJS。我发现这篇文章是关于如何在SAPUI5 Export Excel (.xlsx extension) file with includes responsive table data in SAPUI5中实现和使用sheetJS库的代码,但我一般要解决的问题是,如何在eclipse上的SAPUI5项目中添加外部JS库?请注意,我们正在netweaver服务器上运行SAPUI5应用程序。我需要了解基于我所拥有的环境将这些JS放在哪里(将它/它们放到webContent / path中是否合适?)以及如何访问它们。提前谢谢!
答案 0 :(得分:0)
通过结合我得到的所有研究,我们已经得到了答案。
我发现很多外部库的组合用于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在控制器中定义它们 Defining 3rd party libraries in SAPUI5 您还会注意到我在上面添加了2行代码: / * global XLSX:true / / 全球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');
}
随时提供反馈意见。可能还有其他更好的方法来实现这一目标。谢谢!
答案 1 :(得分:0)
有sap.ui.export.Spreadsheet控件
我刚才建立了一个样本here。