You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SheetJS向xlsm工作簿的现有工作表追加新行

SheetJs 向已有Excel工作表追加行的修正方案

原有代码存在3个核心问题:

  • XLSX.utils.sheet_add_json会直接修改传入的原工作表对象,不需要把返回值作为新工作表调用book_append_sheet,该操作会额外新增多余的工作表
  • 固定写死origin: "A31",只能在指定位置插入,无法自动适配已有数据的末尾
  • XLSX.write仅生成二进制文件内容,不会写入本地磁盘,因此看不到文件更新效果

修正后的完整代码:

const XLSX = require('xlsx')
// 读取原有xlsm工作簿
const wb = XLSX.readFile('./plan.xlsm')    
const firstSheetName = wb.SheetNames[0]
const firstSheet = wb.Sheets[firstSheetName]

// 计算插入起始位置:已有数据的下一行
let startRow = 0
if (firstSheet['!ref']) {
  const range = XLSX.utils.decode_range(firstSheet['!ref'])
  startRow = range.e.r + 1
}

// 追加新行数据
XLSX.utils.sheet_add_json(firstSheet, [
  { A: 4, B: 5, C: 6 }
], {
  header: ["A", "B", "C"],
  skipHeader: true,
  origin: startRow
})

// 写入更新后的工作簿,保留xlsm格式
XLSX.writeFile(wb, './plan.xlsm', { bookType: 'xlsm' })

如果你的工作表首行是表头,只需要把header参数的值替换为你实际的表头字段即可,保证新数据和原有列对应。

内容的提问来源于stack exchange,提问作者Prasanna Kumar S R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 04:06:07