excel-sheet-splitter
Excel工作表拆分工具
任务目标
- 本Skill用于:将Excel工作簿(.xlsx, .xlsm)按工作表拆分为独立的Excel文件
- 能力包含:保留所有单元格值和公式、保持原始格式、维护列宽行高、保留合并单元格
- 触发条件:用户需要将多工作表Excel文件拆分为独立文件时
前置准备
- 依赖说明:scripts脚本所需的Python包
openpyxl>=3.0.0 - Python版本:3.7或更高版本
操作步骤
第一步:准备拆分
将需要拆分的Excel文件准备好,确保文件格式为.xlsx或.xlsm。
第二步:执行拆分
基本用法
使用默认设置拆分Excel文件(输出到相同目录):
python scripts/split_excel_sheets.py input_file.xlsx
这将创建名为input_file_Sheet1.xlsx、input_file_Sheet2.xlsx等的文件。
高级选项
指定输出目录:
python scripts/split_excel_sheets.py input_file.xlsx -o ./output_folder
自定义文件名前缀:
python scripts/split_excel_sheets.py data.xlsx -p "2024年报表"
生成:2024年报表_Sheet1.xlsx、2024年报表_Sheet2.xlsx等。
JSON格式输出(用于程序化调用):
python scripts/split_excel_sheets.py input_file.xlsx --json
返回包含文件路径和状态的结构化JSON数据。
第三步:查看结果
拆分完成后,在输出目录查看生成的Excel文件。每个工作表都会生成一个独立的Excel文件。
Python API调用
可以直接在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:拆分报表用于分发
功能:将月度报表按部门工作表拆分 执行方式:脚本执行
python scripts/split_excel_sheets.py monthly_report.xlsx -o ./team_reports -p "2024年1月"
输出:在team_reports目录生成以"2024年1月"为前缀的独立Excel文件
示例2:提取所有工作表用于单独处理
功能:将合并数据文件的每个工作表提取为独立文件 执行方式:脚本执行
python scripts/split_excel_sheets.py consolidated_data.xlsx
输出:每个工作表成为独立的Excel文件,可用于单独分析
示例3:程序化批量处理
功能:批量处理多个Excel文件 执行方式: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目录
测试建议
在处理重要文件之前,建议使用样本工作簿进行测试:
# 使用测试文件进行拆分
python scripts/split_excel_sheets.py test_file.xlsx -o ./test_output
# 验证所有工作表都被正确拆分并保留格式
资源索引
- 核心脚本:见 scripts/split_excel_sheets.py(Excel工作表拆分工具)
注意事项
- 确保Excel文件路径正确,文件格式为.xlsx或.xlsm
- 拆分后的文件中,跨工作表引用的公式可能需要手动调整
- 工作表名中的特殊字符会被自动清理为文件系统兼容的字符
- 建议先用测试文件验证功能,再处理重要数据
More from sakumyz/skills
excel-to-markdown
将 Excel 文件转换为 Markdown 表格,支持合并单元格处理、多工作表输出、基础字体语义(粗体/斜体)与超链接转换。适用于将式样书、数据表转为可读的 Markdown 文档。
64redmine-ticket-to-task
Redmine 工单到开发计划的一站式流程。从 Redmine 票据自动提取需求、分析任务范围、拆解开发步骤、定位相关式样书和代码文件。适用于:(1) 收到新的 Redmine 课题/Bug/Todo 时,(2) 需要快速理解票据并制定开发计划时。需配合 redmine-search skill 使用。
9perf-analyzer
前端性能分析助手。分析组件渲染性能、Bundle 大小、网络请求效率,给出优化建议。适用于:(1) 页面加载慢排查,(2) 组件重渲染优化,(3) Bundle 体积优化,(4) 运行时性能瓶颈定位。
8smart-debugger
前端智能调试助手。从错误信息、控制台日志、异常行为描述快速定位问题代码并给出修复建议。适用于:(1) 运行时错误(TypeError、ReferenceError 等),(2) 控制台警告分析,(3) 页面白屏/卡顿排查,(4) 网络请求异常,(5) 组件渲染异常。与 BugHunter 区别:smart-debugger 聚焦快速定位,BugHunter 做完整闭环修复。
8redmine-search
Redmine 访问 Skill,仅查询指派给我的工单,提供通过 API Token 认证方式访问 Redmine 系统的功能。
8chat-to-obsidian-note
将 AI 聊天内容提炼为结构化技术文档并保存到 Obsidian 知识库。支持三种文档类型:问题解决型、知识学习型、方案对比型。自动推断知识库分类目录,生成符合 Obsidian 规范的 Markdown 文件(含 frontmatter、双链)。适用于:(1) 聊天中解决了技术问题后想记录下来,(2) 学到新知识想沉淀到知识库,(3) 对比了多个方案后想保存决策过程。触发条件:用户说"保存到知识库"、"导出到 Obsidian"、"记录到笔记"、"保存这次对话"、"转成文档"等。
8