# Excel Sheet Splitter

> 将Excel工作簿按工作表拆分为独立的Excel文件，每个工作表生成一个单独的文件。适用场景：(1) 将多工作表Excel文件拆分为单独文件，(2) 提取特定工作表为独立文件，(3) 分发合并工作簿中的工作表，(4) 为单独处理或分发创建工作表副本。

- Skill: `sakumyz/excel-sheet-splitter` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add sakumyz/excel-sheet-splitter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sakumyz/excel-sheet-splitter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: sakumyz (https://skillmd.com/u/sakumyz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sakumyz/excel-sheet-splitter

---


# Excel工作表拆分工具

## 任务目标

- 本Skill用于：将Excel工作簿(.xlsx, .xlsm)按工作表拆分为独立的Excel文件
- 能力包含：保留所有单元格值和公式、保持原始格式、维护列宽行高、保留合并单元格
- 触发条件：用户需要将多工作表Excel文件拆分为独立文件时

## 前置准备

- 依赖说明：scripts脚本所需的Python包
  ```
  openpyxl>=3.0.0
  ```
- Python版本：3.7或更高版本

## 操作步骤

### 第一步：准备拆分

将需要拆分的Excel文件准备好，确保文件格式为.xlsx或.xlsm。

### 第二步：执行拆分

#### 基本用法

使用默认设置拆分Excel文件（输出到相同目录）：

```bash
python scripts/split_excel_sheets.py input_file.xlsx
```

这将创建名为`input_file_Sheet1.xlsx`、`input_file_Sheet2.xlsx`等的文件。

#### 高级选项

**指定输出目录：**

```bash
python scripts/split_excel_sheets.py input_file.xlsx -o ./output_folder
```

**自定义文件名前缀：**

```bash
python scripts/split_excel_sheets.py data.xlsx -p "2024年报表"
```

生成：`2024年报表_Sheet1.xlsx`、`2024年报表_Sheet2.xlsx`等。

**JSON格式输出（用于程序化调用）：**

```bash
python scripts/split_excel_sheets.py input_file.xlsx --json
```

返回包含文件路径和状态的结构化JSON数据。

### 第三步：查看结果

拆分完成后，在输出目录查看生成的Excel文件。每个工作表都会生成一个独立的Excel文件。

## Python API调用

可以直接在Python代码中导入并使用函数：

```python
from scripts.split_excel_sheets import split_excel_sheets

result = split_excel_sheets(
    input_file='data.xlsx',
    output_dir='./output',
    prefix='自定义前缀'
)

print(f"状态: {result['status']}")
print(f"创建了 {len(result['files'])} 个文件")
```

## 输出格式说明

脚本返回一个字典，包含以下字段：

- `status`: 状态码 ('success'成功, 'partial_success'部分成功, 'error'错误)
- `message`: 人类可读的摘要信息
- `input_file`: 原始文件路径
- `output_directory`: 文件创建位置
- `files`: 创建的文件路径列表
- `errors`: 错误信息列表（如有）
- `total_sheets`: 原始文件中的工作表数量
- `successful`: 成功创建的文件数量
- `failed`: 失败的工作表数量

## 文件命名规则

输出文件命名格式：`{前缀}_{工作表名}.xlsx`

- 默认前缀：输入文件名（不含扩展名）
- 工作表名会被清理（仅保留字母数字、空格、连字符、下划线）
- 文件系统不兼容的字符（如`/`、`\`、`*`、`?`）会被移除

## 保留内容说明

拆分后的每个文件将保留：

- 所有单元格值和公式
- 原始格式（字体、颜色、边框、填充、数字格式）
- 列宽和行高
- 合并单元格
- 工作表结构

## 错误处理

脚本能处理常见问题：

- **文件不存在**：报告文件未找到
- **无工作表**：报告工作簿为空
- **工作表处理错误**：继续处理其余工作表，逐个报告错误
- **工作表名中的非法字符**：自动清理为有效文件名

退出代码：

- `0`: 成功或部分成功
- `1`: 完全失败

## 局限性说明

- **外部引用公式**：如果公式引用其他工作表的单元格，在独立文件中可能显示错误
- **工作表间依赖**：引用其他工作表的图表或数据验证可能无法正常工作
- **宏代码**：.xlsm文件的VBA代码会被保留，但引用其他工作表的宏可能失败

## 使用示例

### 示例1：拆分报表用于分发

**功能**：将月度报表按部门工作表拆分
**执行方式**：脚本执行

```bash
python scripts/split_excel_sheets.py monthly_report.xlsx -o ./team_reports -p "2024年1月"
```

**输出**：在team_reports目录生成以"2024年1月"为前缀的独立Excel文件

### 示例2：提取所有工作表用于单独处理

**功能**：将合并数据文件的每个工作表提取为独立文件
**执行方式**：脚本执行

```bash
python scripts/split_excel_sheets.py consolidated_data.xlsx
```

**输出**：每个工作表成为独立的Excel文件，可用于单独分析

### 示例3：程序化批量处理

**功能**：批量处理多个Excel文件
**执行方式**：Python代码

```python
import glob
from scripts.split_excel_sheets import split_excel_sheets

for file in glob.glob('*.xlsx'):
    result = split_excel_sheets(file, output_dir='./split_files')
    if result['status'] != 'success':
        print(f"{file}处理遇到问题: {result['message']}")
```

**输出**：所有Excel文件的工作表都被拆分到split_files目录

## 测试建议

在处理重要文件之前，建议使用样本工作簿进行测试：

```bash
# 使用测试文件进行拆分
python scripts/split_excel_sheets.py test_file.xlsx -o ./test_output
# 验证所有工作表都被正确拆分并保留格式
```

## 资源索引

- 核心脚本：见 [scripts/split_excel_sheets.py](scripts/split_excel_sheets.py)（Excel工作表拆分工具）

## 注意事项

- 确保Excel文件路径正确，文件格式为.xlsx或.xlsm
- 拆分后的文件中，跨工作表引用的公式可能需要手动调整
- 工作表名中的特殊字符会被自动清理为文件系统兼容的字符
- 建议先用测试文件验证功能，再处理重要数据

