Node npm ライブラリ "ExcelJS" を使用して、Excel ワークブックのワークシートを読み取り、シートの行にあるデータを表すオブジェクトを配列に入力しています。
この問題が ExcelJS に直接関係しているとは考えていません。おそらく、Javascript 関数のコンテキストを根本的に理解していないことが原因です。
コード:
getData = function () {
var dataRows = [];
workbook.xlsx.readFile("myExcelWorkbook").then(function () {
var worksheet = workbook.getWorksheet("MyWorksheet");
worksheet.eachRow(function (row) {
var dataRow = {
colA: row.getCell("A").value,
colB: row.getCell("B").value,
colC: row.getCell("C").value
};
dataRows.push(dataRow);
});
});
return dataRows;
};
上記のコードのステップをデバッグすると、eachRow 関数で見つかった正しいデータが dataRows オブジェクトに取り込まれている場所を確認できます。ただし、「readFile」関数を終了すると、dataRows オブジェクトに取り込まれたすべての項目が単純に消えます。
どのように dataRows にデータを入力しようとしても (たとえば、外側の関数を呼び出して dataRows 配列にデータを入力するなど)、workbook.xslx.readFile() のコンテキスト内で作成されたオブジェクトは後で破棄されたように見えます。変。