node.js - readXlsxFile在节点js中乱序读取excel表
问题描述
我正在使用下面的代码来读取和填充我的地图。但是即使在对代码应用承诺之后,表格数据也会被乱序读取。因此交换了 2 个键数据(键是工作表名称)。
异步函数getSheetRows(sheetIndexMap,文件){
let sheetRowsMap = {};
const promises = sheetIndexMap.map(async (sheet) => {
return {
sheetName: sheet.name,
sheetRows: await readXlsxFile(file, { sheet:sheet.name})
}
})
const sheetRowsByResources = await Promise.all(promises);
sheetRowsByResources.forEach (sheetRowsByResource => {
sheetRowsMap[sheetRowsByResource.sheetName] = sheetRowsByResource.sheetRows
})
return sheetRowsMap
}
async function getResourceDataMap(stationCode, event) {
let file = event.target.files[0];
let sheetIndexMap = await readXlsxFile(file, { getSheets : true} );
let resourceDataMap = {};
const sheetRowsMap = await getSheetRows(sheetIndexMap, file);
/*
Consider all the sheets
*/
Object.keys(sheetRowsMap).map((sheetName) => {
if(isSheetNameValid(sheetName)) {
console.log("Entered for sheetName::" + sheetName);
let sheetRows = sheetRowsMap[sheetName];
console.log("sheet Rows for:::::" +sheetName + " are " + sheetRows.length);
if (sheetRows != null && sheetRows.length > 1) { // we need atleast two rows
let headers = sheetRows[0];
console.log("header obtained is:" +headers);
if(isColumnNamesValid(sheetName, headers)) {
let sheetMapList = getSheetMap(sheetRows);
console.log("SheetMapList obtained is:" + sheetMapList);
// STEP : Create a map of the various sheets (corresponding to each resource type)
console.log("SheetName here is::::::::" +sheetName);
resourceDataMap[sheetName] = {
headerRows: headers,
sheetMapList : sheetMapList
};
console.log("Resource data Map within :" + resourceDataMap["PRE_STAGING_AREA"]);
}
}
}
})
return resourceDataMap;
}
请帮忙!!!!
解决方案
问题在于 read-excel-file 节点插件版本。我将它从 3.x 更改为 4.x。
推荐阅读
- javascript - 使用 PHP 在 MySql 数据库中使用 Java 脚本动态添加行插入
- java - 为什么当我调用 Universe.getCanvas().getView().repaint(); 时 java3d 闪烁
- javascript - 使用nodeJS将授权功能传递到另一个页面的最佳方法
- vue.js - Vuex mapstate 未定义
- python - 如何在我的自定义小部件模板中包含内置的 django 小部件模板?
- java - 为什么 list.parallelStream().forEach() 不处理 Java 中列表中的所有元素?
- python - 如何区分 OpenCV 中的实心圆/轮廓和空心圆/轮廓?
- flutter - 按下按钮时如何增加文本的大小?
- javascript - 未捕获的类型错误:无法读取 jquery 中未定义的属性“SPAN_ID”
- c++ - ProtoBuf:如何为新消息重用 FieldDescriptor?如何有效地从动态消息中获取字段值?