首页 > 解决方案 > 如何改进此功能以覆盖 Excel 单元格?

问题描述

我正在使用此代码尝试覆盖 Excel 中的单元格:

function readExcelFile(workbook, row, cell, newData) {
    workbook.xlsx.readFile('H://filename.xlsm')
        .then(function () {
            cell.value = newData;
            row.commit();
            return workbook.xlsx.writeFile('H://newFile.xlsx');
        });
}

我可以将数据记录到控制台,但 Excel 文件保持不变。

任何帮助都会很棒,谢谢。

标签: javascriptexcelexceljs

解决方案


据推测,函数参数rowcell对象是否相关workbook?但是,他们将在您正在编写文件的匿名函数范围内失去此连接。(从技术上讲,JavaScript 通过值而不是通过引用将变量传递给函数。)

而是传递查找单元格所需的信息,并在函数中本地获取它:

function readExcelFile(workbook, worksheetName, rowIndex, columnIndex, newData) {
    workbook.xlsx.readFile('H://filename.xlsm')
        .then(function () {
            worksheet = workbook.getWorksheet(worksheetName);
            row = worksheet.getRow(rowIndex);
            cell = row.getCell(columnIndex);
            cell.value = newData;
            row.commit();
            return workbook.xlsx.writeFile('H://newFile.xlsx');
        });
}

readExcelFile(my_workbook, "My Worksheet", 3, 3, 34232);

推荐阅读