我是AngularJS的新手。
我在某个文件夹中的服务器上已经存在一个名为sample.xls的excel文件。此excel文件中包含四个工作表。我想解析整个文件(即所有工作表中的数据)。
我应该如何在AngularJS中做到这一点?
我不希望代码在AngularJS中将excel文件上传到服务器。我想要一种方法来解析使用AngularJS已经存在于服务器上的excel文件。
请有人在这方面帮助我。
如果您可以使用包含多个工作表的excel文件并使用一些工作示例演示您的代码,那会更好。
谢谢。
您可以从服务器请求excel文件,然后使用https://github.com/SheetJS/js-xlsx处理Javascript / Typescript中的结果。
虽然就个人而言,我会选择以选择的语言进行阅读服务器端,然后将包含的数据作为Json对象返回。
使用此代码从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>
我知道这是一个老问题,但这个答案可以帮助别人。
要使用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);