Excel 表格拆分
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_8f803df1/excel-split。
技能介绍
面对大表拆分的性能与内存瓶颈
当我们需要将一张包含数十万行的大型 Excel 表格按某一列(如申请人、年份)的值拆分成多个独立文件时,传统的 pandas 读取与重写方案往往会暴露出明显的性能短板。在处理 29 万行的测试用例中,pandas 扫描耗时高达 82 秒,且重复解析会迅速推高内存占用。此外,拆分后的文件往往继承了原始文件庞大的 sharedStrings.xml,导致生成和打包阶段耗时成倍增加。excel-split 技能正是为了解决这些工程化痛点而设计的。
核心工作流与流式解析机制
该技能遵循 excel-safe-workflow 四步法,从需求解析、勘察规划到执行与验证,形成了一套标准化的处理流水线:
- 需求解析与规划:明确拆分列、
Top N限制(默认 20,唯一值超过 50 时其余合并为“其他”)及输出目录。若原表存在去重或筛选留下的行号空隙,规划阶段会要求先进行压实操作。 - 流式解析与分流:在执行阶段,摒弃了重复解析的策略,采用
lxml的iterparse进行单次扫描。它以流式方式解析 XML,按行将数据分流到各个输出缓冲区中。这种机制将 29 万行主文件的分流时间压缩至 51 秒,且内存占用仅为 100-200MB。 - 自动命名与验证:输出文件名会自动清理非法字符,并在拆分完成后进行严格的数据验证。
适用边界与工程注意事项
尽管流式解析大幅优化了扫描性能,但在实际应用中仍需关注以下边界条件:
- 共享字符串膨胀问题:由于每个输出文件都会继承完整的
sharedStrings.xml,生成 N 个文件会导致总体积达到原始文件的 N 倍。这会显著拖慢最终的打包压缩耗时。 - 前置数据压实:如果原始文件之前经历过去重或筛选操作,必须先调用压实功能清除行号空隙,否则会导致
pandas扫描行数虚高。 - 操作前备份:遵循安全工作流,拆分前会自动备份原文件(采用时间戳命名),并在成功后仅保留最新的 3 份备份,以避免磁盘空间浪费。
使用场景
- 需要按申请人将29万行的大表拆分成独立文件
- 处理含去重空隙的表格,需先压实再拆分
- 唯一值超过50列的拆分,需限制Top 20
- 拆分后文件需自动清理非法字符命名
适合人员
- 行政助理:需要将数十万行的大表按部门拆分给不同团队
- 数据分析师:处理筛选后的历史表格时需先压实再拆分
- 财务专员:按年份拆分账单明细生成独立报表
- 运维工程师:需要低内存解析超大Excel文件进行分流