如何解析/读取已存在于服务器上的AngularJS中的excel文件(.xls或.xlsx)?

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

我是AngularJS的新手。

我在某个文件夹中的服务器上已经存在一个名为sample.xls的excel文件。此excel文件中包含四个工作表。我想解析整个文件(即所有工作表中的数据)。

我应该如何在AngularJS中做到这一点?

我不希望代码在AngularJS中将excel文件上传到服务器。我想要一种方法来解析使用AngularJS已经存在于服务器上的excel文件。

请有人在这方面帮助我。

如果您可以使用包含多个工作表的excel文件并使用一些工作示例演示您的代码,那会更好。

谢谢。

angularjs excel angularjs-directive filereader xls
3个回答
0
投票

您可以从服务器请求excel文件,然后使用https://github.com/SheetJS/js-xlsx处理Javascript / Typescript中的结果。

虽然就个人而言,我会选择以选择的语言进行阅读服务器端,然后将包含的数据作为Json对象返回。


0
投票

使用此代码从excel文件中读取数据

 <script>
/* set up XMLHttpRequest */
var url = "test.xlsx";
var oReq = new XMLHttpRequest();
oReq.open("GET", url, true);
oReq.responseType = "arraybuffer";

oReq.onload = function(e) {
  var arraybuffer = oReq.response;

  /* convert data to binary string */
  var data = new Uint8Array(arraybuffer);
  var arr = new Array();
  for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
  var bstr = arr.join("");

  /* Call XLSX */
  var workbook = XLSX.read(bstr, {type:"binary"});

  /* DO SOMETHING WITH workbook HERE */
  var first_sheet_name = workbook.SheetNames[0];
  /* Get worksheet */
  var worksheet = workbook.Sheets[first_sheet_name];
  console.log(XLSX.utils.sheet_to_json(worksheet,{raw:true}));
}

oReq.send();
    </script>

0
投票

我知道这是一个老问题,但这个答案可以帮助别人。

要使用AngularJS从服务器获取XLS文件:

var handler = function(response) {
  // response.data will have your xls file as an arraybuffer

  // then do as the other answers have suggested
  /* convert data to binary string */
  var data = new Uint8Array(response.data);
  var arr = new Array();
  for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
  var bstr = arr.join("");
  /* Call XLSX */
  var workbook = XLSX.read(bstr, {type:"binary"});
  /* DO SOMETHING WITH workbook HERE */
  var first_sheet_name = workbook.SheetNames[0];
  /* Get worksheet */
  var worksheet = workbook.Sheets[first_sheet_name];
  console.log(XLSX.utils.sheet_to_json(worksheet,{raw:true}));
}
// get the XLS file from the server based on the url you pass
$http.get(url, {'responseType':'arraybuffer'}).then(handler);
© www.soinside.com 2019 - 2024. All rights reserved.