SAPUI5 的 Sheetjs;将表格数据导出到电子表格

问题描述 投票:0回答:3

我的一个 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/ 路径是否可以?)以及如何访问它们。

excel sapui5 sheetjs
3个回答
3
投票

结合我得到的所有研究已经得到了答案。

我发现很多外部库的组合可用于 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 */
/* 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

随时就此提供反馈。 可能有其他更好的方法来实现这个目标。


1
投票

sap.ui.export.Spreadsheet
控制

我刚才在这里做了一个样本


-3
投票

我尝试了 Henry Caparas 提到的上述代码。我收到错误信息

View1.controller.js?eval:20 未捕获类型错误:XLSX.utils.book_new 不是函数

在我犯错的地方能帮我吗

© www.soinside.com 2019 - 2024. All rights reserved.