SheetUIs for SAPUI5;将表格数据导出到电子表格

时间:2018-05-16 08:41:37

标签: excel sapui5 sheetjs

我的一个SAPUI5应用程序表数据有一个要求可以导出到excel /电子表格。 SAPUI5当前可用的标准方法 sap / ui / core / util / Export 不符合导出数据的标准,特别是它只在1列中写入数据。 样本导出数据 enter image description here

这是一个好消息,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中是否合适?)以及如何访问它们。提前谢谢!

2 个答案:

答案 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');
    }

输出: Output export file

随时提供反馈意见。可能还有其他更好的方法来实现这一目标。谢谢!

答案 1 :(得分:0)

有sap.ui.export.Spreadsheet控件

我刚才建立了一个样本here