Первая проблема, поскольку getRowCount является асинхронной, она возвращает Promise
Вторая проблема, getRowCount фактически ничего не возвращает
async function getRowCount() {
let returnValue;
await Excel.run(async(context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
var rowCount = 0;
for (var i = 0; i >= 0; i++) {
var cell = sheet.getCell(i, 0);
cell.load("address, values");
await context.sync();
if (cell.values[0][0] == "") {
break;
} else {
rowCount++;
}
}
await context.sync();
returnValue = rowCount;
});
return returnValue;
}
Возможно, есть лучший способ сделать это, но я не знаю, как работает этот Excel.run и т. д., но до тех пор, пока Excel.run возвращает Promise - что я предполагаю, потому что вы используете await
- тогда вышеприведенное должно работать
и использование в вашем коде будет
async function getData() {
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
let rowCount = await getRowCount();
var arrExport = Create2DArray(rowCount);
for (var r = 0; r < rowCount; r++) {
.
.
.
Теперь должно работать