我有这个excel格式,然后将导入并显示到html表。
参与者总是有相同的培训师,所以我只是合并了培训师列,但问题是当console.log
它,它只计为一行。
这是密码
const Importssss = document.getElementById('importInput');
var JSONExcel = function () {
this.parseExcel = function (file) {
var reader = new FileReader();
reader.onload = function (e) {
var data = e.target.result;
var excelBinary = XLSX.read(data, { type: 'binary' });
excelBinary.SheetNames.forEach(function (sheetName) { // Reading each sheet data in excel
var XL_row_object = XLSX.utils.sheet_to_row_object_array(excelBinary.Sheets[sheetName]);
var json_object = JSON.stringify(XL_row_object); // json from excel
var excelData = (JSON.parse(json_object)); // json parsed from excel
console.log(excelData);
})
};
reader.onerror = function (ex) {
console.log(ex);
};
reader.readAsBinaryString(file);
};
};
Importssss.addEventListener('change', function (evt) {
var files = evt.target.files;
if (files.length !== 0) {
var JSONConvert = new JSONExcel();
JSONConvert.parseExcel(files[0]); // Pass to Excel Converter Function
}
})
这是输出
预期输出不应计为第一行,而应计为所有行。
1条答案
按热度按时间qzwqbdag1#
您可以创建一个新数组来跟踪最后命名的培训师
你也可以用几种方法来简化你的代码。最重要的是,不需要
JSON.stringify
后面跟着JSON.parse
。它们相互抵消,所以只要跳过这两行就行了。只需调用
XLSX.utils.sheet_to_row_object_array
,但可能会像这样显式地命名结果变量:然后,您可以创建一个数组,并填充缺失的
Trainer
: