Excel-to-CSV 是一个专注于从电子表格二进制文件中提取表格数据的技能,其核心用途是将 .xlsx 或 .xls 格式中的有界表格或整个工作表转换为扁平的 .csv 记录。
主要能力方面,该技能提供转换引擎(scripts/convert.py)和验证引擎(scripts/verify_csv.py)。转换引擎负责执行实际的提取操作,验证引擎用于在转换后检查输出 CSV 的完整性。技能遵循若干原则:输出 CSV 必须使用 UTF-8 编码以防止数据损坏;不得丢弃列或截断长字符串字段(如序列号),除非用户明确要求;保持内部转换引擎定义的浮点精度;对于包含多个不连续表格的复杂工作表,会主动询问用户具体的单元格范围(例如 A1:M50)以确保提取准确。
使用方式上,该技能要求 Python 3.8+ 以及 pandas 和 openpyxl,安装命令为 pip install pandas openpyxl。工作流程分为三个阶段。第一阶段为引擎执行:先进行预检验证,检查文件大小和基本可用性,如果工作簿异常小(小于 1kb)或不可读,则停止并警告用户可能损坏;如果用户未指定工作表,先列出可用工作表;然后调用转换脚本,命令示例为 python3 ./scripts/convert.py --excel "path/to/data.xlsx" --sheets "Sheet1" --outdir "output_folder/"。第二阶段为委托约束验证:生成 CSV 后立即执行验证引擎,命令为 python3 ./scripts/verify_csv.py "output_folder/Sheet1.csv",如果状态为 success 则继续,如果为 errors_found 则不得报告任务完成,需查看 JSON 日志并使用 bash 工具(awk、sed)修复文件,并重新运行验证直到通过。第三阶段为交付上下文:如果转换 CSV 是为了读取和分析数据,绝不能使用 cat 直接打印整个 CSV 文件到对话历史中,因为大文件会崩溃上下文窗口。
适用场景包括需要将 Excel 中的表格数据提取为可移植 CSV 格式的情况,例如数据迁移、数据分析前的预处理等。
限制方面,该技能无法处理 .pdf、.doc 或 .txt 文件;仅提取原始数据,不能更改单元格颜色、字体或电子表格样式;不适用于一般电子表格建议(如“如何使用 VLOOKUP”),严格来说是一个提取工具。此外,技能要求在使用优化循环前必须初始化 git 仓库(git init)以启用 KEEP/DISCARD 提交回滚逻辑。对于大文件,需先验证行数(wc -l),小于等于 50 行可以直接 cat 读取,大于 50 行必须使用分块读取(head -n 20)或查询特定脚本,绝不能打印整个负载到聊天中。密码保护协议要求绝不尝试用自定义脚本破解加密工作簿,如果 convert.py 返回加密错误,立即停止并询问用户密码。无影子写入规则要求所有中间文件必须留在 --outdir 内或在 CSV 验证后立即删除。禁止使用原始 openpyxl 命令编写任意 Python 脚本重新发明 .xlsx 到 .csv 的管道,始终通过 convert.py 工具进行二进制提取。如果 convert.py 返回严重异常(如密码保护工作簿、损坏的 ZIP 元数据),应停止并查阅 references/fallback-tree.md 寻找替代提取策略。