Справочная информация:
Я пытаюсь создать файл JSON из огромного и сложного файла xlsx.Тем не менее, я опубликую небольшой пример здесь, чтобы мы могли сделать его простым.Я придумал следующий код SheetJS :
Код:
<!doctype html>
<html>
<head>
<title>Excel to JSON Demo</title>
<script src="xlsx.full.min.js"></script>
</head>
<body>
<script>
/* set up XMLHttpRequest */
var url = "array 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>
</body>
</html>
Проблема:
Я использовал этот код для преобразования следующего простого xlsx файла .Теперь проблема в том, что я не получаю ожидаемый файл JSON.
Что я получаю:
(6) […]
0: {…}
Blocklist: "id"
__EMPTY: "name"
__EMPTY_1: "type"
__EMPTY_2: "blocks"
__rowNum__: 1
version: 1
<prototype>: Object { … }
1: {…}
Blocklist: "dsts"
__EMPTY: "grupo"
__EMPTY_1: 2
__EMPTY_2: "sort ID"
__EMPTY_3: "exercises"
__rowNum__: 2
<prototype>: Object { … }
2: {…}
__EMPTY_2: 1
__EMPTY_3: "dsts1"
__EMPTY_4: "dsts2"
__EMPTY_5: "dsts3"
__rowNum__: 3
<prototype>: Object { … }
3: {…}
__EMPTY_2: 2
__EMPTY_3: "dsts4"
__EMPTY_4: "dsts5"
__EMPTY_5: "dsts6"
__rowNum__: 4
<prototype>: Object { … }
4: {…}
Blocklist: "afus"
__EMPTY: "Fußtechnik"
__EMPTY_1: 1
__EMPTY_2: 1
__EMPTY_3: "afus1"
__EMPTY_4: "afus2"
__EMPTY_5: "afus3"
__rowNum__: 5
<prototype>: Object { … }
5: {…}
__EMPTY_2: 2
__EMPTY_3: "afus4"
__EMPTY_4: "afus5"
__EMPTY_5: "afus6"
__rowNum__: 6
<prototype>: Object { … }
length: 6
<prototype>: Array []
Что мне нужно:
{
"version": "1.0",
"blocklist": [
{
"id" : "dsts",
"name": "grupo",
"type" : 2,
"blocks": [
{
"sortId": 1,
"exercises": [
"dsts1",
"dsts2",
"dsts3"
]
},
{
"sortId": 2,
"exercises": [
"dsts4",
"dsts5",
"dsts6"
]
}
]
},
{
"id" : "afus",
"name": "Fußtechnik",
"type" : 1,
"blocks": [
{
"sortId": 1,
"exercises": [
"afus1",
"afus2",
"afus3"
]
},
{
"sortId": 2,
"exercises": [
"afus4",
"afus5",
"afus6"
]
}
]
}
]
}
Вопрос:
Совершенно очевидно, что у меня есть 2 варианта: либо я адаптирую файл Excel в соответствии с моим кодом JS, либо я адаптирую код длясопоставьте файл Excel.Я готов сделать что-то из этого, но я думаю, что адаптация кода была бы более разумной, поскольку файл Excel должен постоянно обновляться и расширяться в будущем.Так что я должен изменить / добавить к коду, чтобы он выводил нужный формат JSON?
Другая информация:
- ОС:macOS 10.14 Mojave
- SheetJS Версия: 0.14.0