首页 文章

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

提问于
浏览
0

我的一个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

    已经通过结合我得到的所有研究得到了答案 .

    我找到了很多用于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您还会注意到我在上面添加了两行代码:/ * 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');
        }
    

    输出:Output export file

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

  • 0

    有sap.ui.export.Spreadsheet控件

    我刚刚 Build 了一个样本here .

相关问题