1

我的 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 )

然后有人建议我使用可以将数据导出到电子表格的 3rd 方 JS 库,并且在研究后,我遇到了 SheetJS。我找到了这篇关于如何在 SAPUI5 中实现和使用 SheetJS 库代码的文章:Export Excel (.xlsx extension) file with included responsive table data in SAPUI5

我的问题:如何在 Eclipse 上的 SAPUI5 项目中添加外部 JS 库?请注意,我们正在 NetWeaver 服务器上运行我们的 SAPUI5 应用程序。我需要根据我拥有的环境了解将这些 JS 放在哪里(可以将它/它们放在 webContent/ 路径中吗?)以及如何访问它们(如果有的话)。

4

2 回答 2

3

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

我发现了很多外部库的组合,用于 sheetjs 的工作xlsx.jsjszip.js或者xlsx.full.min.js只有或者还有xlsx.full.min.js-FileSaver.js组合。

我第一次尝试使用xlsx.full.min.jsFileSaver组合,它奏效了!我首先下载了两个库并将它们复制到我的/webContent/controller路径中(是的,我的控制器的路径级别相同)。

接下来是使用sap.ui.define 在 SAPUI5 中定义 3rd 方库在您的控制器中定义它们 您还会注意到我在上面添加了 2 行代码:

/* global XLSX:true */
/* global saveAs:true */

使用这 2 行代码,调用库时会出错。如果要在 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');
}

输出: 输出导出文件

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

于 2018-05-18T04:04:47.547 回答
1

sap.ui.export.Spreadsheet控制

不久前我在这里建立了一个样本。

于 2018-05-21T04:00:18.157 回答