如何在 SheetJS 的 xlsm 工作簿中将新行附加到现有工作表

问题描述 投票:0回答:3

我正在尝试将新行附加到现有的 Excel 工作表中,但没有成功。

当我使用

writeFile
而不是
write
函数时,它会创建一个包含所有数据的全新文件,但我想将这些行附加到现有记录中。

这是到目前为止的代码。我正在使用 SheetJs。

const reader = require('xlsx')
const wb = reader.readFile('./plan.xlsm')    
const sheets = wb.SheetNames
var xl_data = reader.utils.sheet_add_json(wb.Sheets[sheets[0]], [
{ A: 4, B: 5, C: 6 }], {header: ["A", "B", "C"], skipHeader: true, origin: "A31"});
reader.utils.book_append_sheet(wb, xl_data);
reader.write(wb, {type: "binary", bookType: "xlsm" });
javascript node.js xlsx sheetjs js-xlsx
3个回答
2
投票

您可以使用免费版本的“xlsx”将新行附加到现有工作表

const workbook = XLSX.readFile(serverPath);
const firstSheetName = workbook.SheetNames[0];
const sheet = workbook.Sheets[firstSheetName];

const cellRef = XLSX.utils.encode_cell({c: YourColumn, r: YourRow});
const cell = sheet[cellRef];
if (cell) {
    // update existing cell
    cell.v = 'YourValue';
} else {
    // add new cell
    XLSX.utils.sheet_add_aoa(sheet, [['YourValue']], {origin: cellRef});
}
XLSX.writeFile(workbook, path);

如果您的问题真的是关于更新文件而不是写入,请参阅@Jesper answer


0
投票

要使用 Sheetjs 编辑文件文件,您需要“Pro Edit”版本。如果您需要编辑文件,您可以购买专业版或尝试寻找其他图书馆。


0
投票

对于想要在电子表格数据 json 开头添加一行的人

const workbook = XLSX.utils.book_new();
const worksheet = XLSX.utils.json_to_sheet(jsonData,{ origin:1});
XLSX.utils.sheet_add_aoa(
  worksheet,
  [['Created ' + new Date().toISOString()]],
  { origin: 0 }
);
//If you want this record to go in the last row change {origin:-1 }
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'DataSheet.xlsx');
© www.soinside.com 2019 - 2024. All rights reserved.