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

Office Script开发需求:合并Excel多工作表为单一表并删除原工作表

Office Script:合并多工作表并删除原表

针对将分散在多个工作表的业务数据合并到新工作表、并删除所有原工作表的需求,以下是完整的实现代码:

function main(workbook: ExcelScript.Workbook) {
  // 获取所有工作表
  let sheets = workbook.getWorksheets();
  // 创建或获取名为"合并结果"的工作表
  let consolidateSheet = workbook.getWorksheet("合并结果") || workbook.addWorksheet("合并结果");
  // 清空合并表原有数据(避免重复执行时数据冗余)
  consolidateSheet.getUsedRange()?.clear(ExcelScript.ClearApplyTo.all);

  let hasHeader = false; // 标记是否已写入表头

  // 遍历每个工作表
  for (let sheet of sheets) {
    // 跳过合并结果表本身
    if (sheet.getName() === consolidateSheet.getName()) {
      continue;
    }
    // 获取当前工作表的已用数据范围,空表直接跳过
    let dataRange = sheet.getUsedRange();
    if (!dataRange) {
      continue;
    }
    let values = dataRange.getValues();
    // 获取合并表当前的最后数据行号
    let lastRow = consolidateSheet.getUsedRange()?.getRowCount() || 0;

    // 处理表头:仅保留第一个工作表的表头,后续表跳过表头行
    if (!hasHeader) {
      let targetRange = consolidateSheet.getRange(lastRow + 1, 1, values.length, values[0].length);
      targetRange.setValues(values);
      hasHeader = true;
    } else {
      // 跳过表头,只写入数据行
      if (values.length > 1) {
        let dataOnly = values.slice(1);
        let targetRange = consolidateSheet.getRange(lastRow + 1, 1, dataOnly.length, dataOnly[0].length);
        targetRange.setValues(dataOnly);
      }
    }
  }

  // 批量删除所有原工作表,仅保留合并结果表
  let sheetsToDelete = workbook.getWorksheets().filter(sheet => sheet.getName() !== consolidateSheet.getName());
  sheetsToDelete.forEach(sheet => sheet.delete());
}

关键说明

  • 自动复用或创建"合并结果"工作表,避免重复创建
  • 处理表头重复问题:默认仅保留第一个工作表的表头,若不需要此逻辑,可删除hasHeader相关代码,直接全量写入所有数据
  • 自动跳过空工作表,防止执行错误
  • 最后批量删除原工作表(不能在遍历原工作表数组时直接删除,会导致遍历异常)

注意事项

  • 执行前建议备份原文件,避免数据丢失
  • 若需要保留原表格式,可添加targetRange.setFormat(dataRange.getFormat())语句复制格式
  • 脚本执行后原工作表会被永久删除,请确认需求后再运行

内容的提问来源于stack exchange,提问作者AmazingBand Proyect's

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:55:37