javascript - 如何从本地 XLSX 文件中读取数据并将其保存到对象/数组中
问题描述
我需要从本地 XLSX 文件中读取数据并将其保存到对象(或数组)中。
数据如下所示:
我需要这样的数据:
所以我可以使用它(将它与其他对象进行比较/显示它......)
这怎么可能?
I tried an AJAX call with the following code:
/* 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];
var test = XLSX.utils.sheet_to_json(worksheet,{raw:true})
console.log(test)
}
oReq.send();
console.log(test) //I can not access it here..
它起作用了,我得到了我需要的对象,但问题是我无法访问函数之外的对象。几个小时前我发了一个帖子: 如何从异步调用(xlsx 文件)中获取对象到全局范围
解决方案
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>
<script>
var ExcelToJSON = function () {
this.parseExcel = function (file) {
var reader = new FileReader();
reader.onload = function (e) {
var data = e.target.result;
var workbook = XLSX.read(data, {
type: 'binary'
});
workbook.SheetNames.forEach(function (sheetName) {
// Here is your object
var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[
sheetName]);
var json_object = JSON.stringify(XL_row_object);
console.log(JSON.parse(json_object));
jQuery('#xlx_json').val(json_object);
})
};
reader.onerror = function (ex) {
console.log(ex);
};
reader.readAsBinaryString(file);
};
};
function handleFileSelect() {
fetch(
'CSV_DATASET.xlsx')
.then(res => res.blob()) // Gets the response and returns it as a blob
.then(blob => {
// Like calling ref().put(blob)
let file = new File([blob], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
console.log(file)
var xl2json = new ExcelToJSON();
console.log(file)
xl2json.parseExcel(file);
});
}
</script>
推荐阅读
- python - BeagleBone Green Wireless 上 PWM 的大量设置时间
- python - 使用 SpaCy 和 Python 创建基于规则的匹配以检测地址
- go - 从 http.ResponseWritter 中提取数据
- python - 如何使用 Python 获取不匹配的列名
- javascript - 为什么这两个相同的基准在同一个浏览器但在两个不同的平台上会有不同的结果?
- ravendb - 在 RavenDB 4.0+ 中按条件对嵌套数组使用 RQL 过滤文档
- join - 雪花的多项选择需要年龄
- python - 在 tkinter 的“Toplevel”透明窗口中创建具有黑色背景的非透明矩形
- java - 弹簧 | 处理大json | jvm内存不足
- javascript - 出现渲染错误,就像从渲染中没有返回任何内容一样