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

如何使用JavaScript将Excel指定工作表保存为独立的新Excel文件

实现方案(exceljs可直接实现)

核心逻辑是读取原工作簿后,新建空工作簿,将TAB1工作表的完整配置复制到新工作簿后保存即可,修改后的可用代码如下:

const ExcelJS = require('exceljs');

const sourceFilename = "abc.xlsx";
const extractSheetName = "tab1";
const outputFilename = "tab1.xlsx";

const extractSingleSheet = async () => {
  // 读取原工作簿
  const sourceWB = new ExcelJS.Workbook();
  await sourceWB.xlsx.readFile(sourceFilename);

  // 匹配目标工作表
  const targetSheet = sourceWB.worksheets.find(sheet => 
    sheet.name.toLowerCase() === extractSheetName
  );
  if (!targetSheet) {
    throw new Error(`未找到名为${extractSheetName}的工作表`);
  }

  // 新建空工作簿,复制目标工作表到新工作簿
  const newWB = new ExcelJS.Workbook();
  // 通过model完整复制工作表的所有内容:数据、样式、列宽、行高、公式等
  newWB.addWorksheet(targetSheet.name, { model: targetSheet.model });

  // 保存新文件
  await newWB.xlsx.writeFile(outputFilename);
  console.log(`工作表已成功导出到${outputFilename}`);
};

extractSingleSheet().catch(err => console.error('导出失败:', err));

关键说明

  • 通过worksheet.model可以拿到工作表的完整配置,不需要逐行逐列复制数据,样式、格式、公式、合并单元格等属性都会完整保留
  • 原代码混用了then和async/await逻辑,容易出现异步执行异常,统一用async/await写法更易维护

替代方案(使用sheetjs/xlsx包)

如果想换其他工具实现,也可以用更轻量的sheetjs库,示例代码如下:

const XLSX = require('xlsx');

// 读取原文件
const wb = XLSX.readFile('abc.xlsx');
// 提取TAB1工作表的数据
const targetSheet = wb.Sheets['TAB1'];
// 新建工作簿,将目标工作表加入
const newWB = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(newWB, targetSheet, 'tab1');
// 保存新文件
XLSX.writeFile(newWB, 'tab1.xlsx');

内容的提问来源于stack exchange,提问作者saicharan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 18:06:02