#angular #typescript
#angular #typescript
Вопрос:
Я использую пакет XLSX для преобразования XLSX в JSON, но я не получаю желаемую структуру после преобразования файла в JSON.
Например:
Прямо сейчас мой ввод в Excel выглядит следующим образом:
вопрос | данные |
OptionA | данные |
OptionB | данные |
optionC | данные |
optionD | данные |
optionE | данные |
объяснение | данные |
Это для листа 1, и тот же формат для листа 2.
И после преобразования я получаю следующее:
"Sheet 1": Array(6) [ {…}, {…}, {…}, … ]
0: Object { question: "optionA", "Data 1": "Data 1", … }
"Data 1": "Data 1"
__rowNum__: 4
question: "optionA"
<prototype>: Object { … }
1: Object { question: "optionB", "Data 1": "Data 1", … }
"Data 1": "Data 1"
__rowNum__: 5
question: "optionB"
<prototype>: Object { … }
2: Object { question: "optionC", "Data 1": "Data 1", … }
"Data 1": "Data 1"
__rowNum__: 6
question: "optionC"
<prototype>: Object { … }
3: Object { question: "optionD", "Data 1": "Data 1", … }
4: Object { question: "optionE", "Data 1": "Data 1", … }
5: Object { question: "explanation", "Data 1": "Data 1", … }
"Sheet 2": Array(6) [ {…}, {…}, {…}, … ]
0: Object { question: "optionA", "Data 1": "Data 1", … }
"Data 1": "Data 1"
__rowNum__: 4
question: "optionA"
<prototype>: Object { … }
1: Object { question: "optionB", "Data 1": "Data 1", … }
"Data 1": "Data 1"
__rowNum__: 5
question: "optionB"
<prototype>: Object { … }
2: Object { question: "optionC", "Data 1": "Data 1", … }
"Data 1": "Data 1"
__rowNum__: 6
question: "optionC"
<prototype>: Object { … }
3: Object { question: "optionD", "Data 1": "Data 1", … }
4: Object { question: "optionE", "Data 1": "Data 1", … }
5: Object { question: "explanation", "Data 1": "Data 1", … }
И я хочу, чтобы это было так:
"Sheet 1": Array [ {…} ]
0: Object { question: "data", optionA: "data", optionB: "data", … }
__rowNum__: 1
explanation: "data"
optionA: "data"
optionB: "data"
optionC: "data"
optionD: "data"
optionE: "data"
question: "data"
<prototype>: Object { … }
length: 1
<prototype>: Array []
"Sheet 2": Array [ {…} ]
0: Object { question: "data", optionA: "data", optionB: "data", … }
__rowNum__: 1
explanation: "data"
optionA: "data"
optionB: "data"
optionC: "data"
optionD: "data"
optionE: "data"
question: "data"
<prototype>: Object { … }
Моя функция, которую я использую для преобразования:
incomingExcel(event: any) {
let workBook = null;
let jsonData = null;
const reader = new FileReader();
const file = event.target.files[0];
reader.onload = (event) => {
const data = reader.result;
workBook = XLSX.read(data, { type: 'binary' });
jsonData = workBook.SheetNames.reduce((initial, name) => {
const sheet = workBook.Sheets[name];
initial[name] = XLSX.utils.sheet_to_json(sheet, { raw: true });
return initial;
}, {});
console.log('Json Output', jsonData);
};
reader.readAsBinaryString(file);
}
Ссылка на пакет: https://github.com/SheetJS/sheetjs#parsing-options