在JavaScript / SAPUI5中读取Excel(xlsx)文件数据中的问题

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

我正在尝试使用FileReader API在我的SAPUI5应用程序中读取.xlsx文件。我用来上传文件的UI5控件是sap.ui.unified.FileUploader我的要求是读取Excel工作表的内容,并将其数据显示在UI5应用程序的表格中。

为此,我创建一个FileReader实例并调用其.readAsBinaryString.readAsText方法并将文件传递给它。读取内容时,在onload事件中,文件的内容以不可读的格式显示(请参阅下文)enter image description here

我想念什么吗?还是有其他读取Excel数据的方式?

javascript sapui5
2个回答
2
投票

您需要在客户端或服务器端解析Excel文件。 Excel文件不是纯文本。没有Excel,旧的excel文件(xls)无法解析,它具有自己的二进制格式。但是您可以解析xlsx文件,这些文件是压缩的多个文件,其中包含原始数据,图像和样式文件。


1
投票

感谢mkysoftthis的答案。我能够读取.xlsx文件的内容。

为此,我必须在项目中创建两个文件jszip.jsxlsx.js。我为它们创建了一个单独的文件夹,并在控制器的sap.ui.define部分中提到了两个文件的位置。

这两个库位于CDNJS - JSZip3CDNJS - XLSX4个位置。

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    .... //other libraries
    "projectnamespace/foldername/jszip",
    "projectnamespace/foldername/xlsx"
], function (Controller,...., jszip, xlsx)

然后,为了读取.xlsx文件,我添加了以下代码:

    var oFileUploader = sap.ui.getCore().byId("fileUploader"); //get the sap.ui.unified.FileUploader
    var file = oFileUploader.getFocusDomRef().files[0]; //get the file from the FileUploader control
    if (file && window.FileReader) {
        var reader = new FileReader();
        reader.onload = function (e) {
            var data = e.target.result;
            var excelsheet = XLSX.read(data, {
                type: "binary"
            });
            excelsheet.SheetNames.forEach(function (sheetName) {
                var oExcelRow = XLSX.utils.sheet_to_row_object_array(excelsheet.Sheets[sheetName]); //this is the required data in Object format
                var sJSONData = JSON.stringify(excelRow); //this is the required data in String format
            });
        };
        reader.readAsBinaryString(file);
    }
© www.soinside.com 2019 - 2024. All rights reserved.