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

JavaScript中如何循环给Excel同列不同单元格重复赋值

批量给Excel指定列赋值实现方法

你当前逐单元格硬编码的写法可复用性差,通过循环批量赋值可以参考以下两种方案:

方案1:固定行范围赋值

适合提前知道需要赋值的行区间的场景:

// 读取Excel文件
const workbook = XLSX.readFile("test.xlsx");
const targetSheet = workbook.Sheets.Sheet1;

// 自定义配置项
const targetColumn = "B"; // 目标列
const startRow = 2; // 起始行
const endRow = 4; // 结束行
const assignValues = [2000, 3000, 4000]; // 对应单元格要赋的值

// 循环批量赋值
for (let i = 0; i < assignValues.length; i++) {
  const cellPosition = `${targetColumn}${startRow + i}`;
  // 兼容单元格不存在的场景,提前初始化
  if (!targetSheet[cellPosition]) targetSheet[cellPosition] = { t: "n" };
  targetSheet[cellPosition].v = assignValues[i];
}

// 保存修改后的文件
XLSX.writeFile(workbook, "test_output.xlsx");

方案2:动态范围赋值

如果需要给目标列所有有效行批量赋值,可先获取工作表的有效数据范围再循环:

const workbook = XLSX.readFile("test.xlsx");
const targetSheet = workbook.Sheets.Sheet1;

// 解析工作表有效数据范围
const sheetRange = XLSX.utils.decode_range(targetSheet["!ref"]);
const targetColumn = "B";
// 列名转列索引
const colIndex = XLSX.utils.decode_col(targetColumn);

// 从第二行(表头行是第一行)开始遍历所有有效行
for (let rowIndex = 1; rowIndex <= sheetRange.e.r; rowIndex++) {
  // 行列索引转单元格地址
  const cellPosition = XLSX.utils.encode_cell({ r: rowIndex, c: colIndex });
  if (!targetSheet[cellPosition]) targetSheet[cellPosition] = { t: "n" };
  // 示例赋值规则:值为(行号)*1000,可按需修改
  targetSheet[cellPosition].v = (rowIndex + 1) * 1000;
}

XLSX.writeFile(workbook, "test_output.xlsx");

注意:如果要赋值的是字符串类型的值,需要把初始化单元格时的t: "n"改为t: "s",避免导出格式异常。

内容的提问来源于stack exchange,提问作者한명훈

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:54:02