我正在嘗試使用 exceljs 將我自己的作業表制作為節點中的物件陣列。基本上我想將行轉換為物件,第一行的值是鍵,實際行的值是值。我用正確的鍵取回一個物件,但總是相同的值(即最后一行的值)。
我究竟做錯了什么?是異步嗎?也忽略空專案,我知道它是壞索引。
代碼:
import Excel from 'exceljs'
const parseWorkbookToObj = async (filename, worksheetNumber) => {
var row = {}
var rows = []
const workbook = new Excel.Workbook();
await workbook.xlsx.readFile(filename);
const worksheet = workbook.getWorksheet(worksheetNumber);
for (var i = 1; i <= worksheet.rowCount; i ){
for(var j = 2; j <= worksheet.columnCount; j ){
var header = await worksheet.getRow(1).values[j]
var value = await worksheet.getRow(i).values[j];
row[header] = value;
}
rows[i] = row;
}
return rows;
}
export default parseWorkbookToObj
示例作業表: 影像
輸出:
[
<1 empty item>,
{
'Header 2': 'Value 9',
'Header 3': 'Value 10',
'Header 4': 'Value 11'
},
{
'Header 2': 'Value 9',
'Header 3': 'Value 10',
'Header 4': 'Value 11'
},
{
'Header 2': 'Value 9',
'Header 3': 'Value 10',
'Header 4': 'Value 11'
},
{
'Header 2': 'Value 9',
'Header 3': 'Value 10',
'Header 4': 'Value 11'
}
]
uj5u.com熱心網友回復:
在回圈內宣告行變數。
for (var i = 1; i <= worksheet.rowCount; i ){
let row = {}
for(var j = 1; j <= worksheet.columnCount; j ){
var header = await worksheet.getRow(1).values[j]
var value = await worksheet.getRow(i).values[j];
row[header] = value;
}
rows[i] = row;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381492.html
標籤:javascript 节点.js 精益求精
