我正在尝试将新行附加到现有的 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" });
您可以使用免费版本的“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
要使用 Sheetjs 编辑文件文件,您需要“Pro Edit”版本。如果您需要编辑文件,您可以购买专业版或尝试寻找其他图书馆。
对于想要在电子表格数据 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');