Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript/SAPUI5中读取Excel(xlsx)文件数据时出现问题_Javascript_Sapui5 - Fatal编程技术网

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

在JavaScript/SAPUI5中读取Excel(xlsx)文件数据时出现问题,javascript,sapui5,Javascript,Sapui5,我正在尝试使用FileReaderapi读取SAPUI5应用程序中的.xlsx文件。我用来上传文件的UI5控件是sap.ui.unified.FileUploader 我的要求是读取Excel工作表的内容,并在UI5应用程序的表格中显示其数据 为此,我创建了一个FileReader实例,调用它的.readAsBinaryString或.readAsText方法并将我的文件传递给它。 读取内容时,在onload事件中,文件内容以不可读的格式显示(请参阅下文) 我错过什么了吗?或者有其他读取Exc

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

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


我错过什么了吗?或者有其他读取Excel数据的方法吗?

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

  • 您可以使用exsting js库进行客户端解析,例如post
  • 您可以将库用于ABAP后端

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

  • 您可以使用exsting js库进行客户端解析,例如post
  • 您可以将库用于ABAP后端
    • 感谢您的回答。我能够阅读.xlsx文件的内容

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

      这两个图书馆可在 和 地点

      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(oExcelRow); // this is the required data in String format
                  });
              };
              reader.readAsBinaryString(file);
          }
      
      谢谢你的回答。我能够阅读.xlsx文件的内容

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

      这两个图书馆可在 和 地点

      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(oExcelRow); // this is the required data in String format
                  });
              };
              reader.readAsBinaryString(file);
          }
      

      检查这个,你可能会有一些想法检查这个,你可能会有一些想法