下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-5ott9gs6--excelsheet.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-5ott9gs6/excelsheet。将含行标签的 Excel 工作底稿(如审计底稿)一键处理为打印版:标签行合并贯通、删除标签下方说明行/空行(保留数据行)、自适应列宽/行高、A4 fitToPage 打印设置、统一字体颜色,可选脱敏客户/单位名称。
阅读全文 (展开查看完整说明)
概述
底稿打印版处理(audit-sheet-print-fit)
概述
audit-sheet-print-fit 用于把多 sheet 的 Excel 工作底稿整理成干净、可直接打印的版本。
核心能力:
- 标签行合并贯通:将指定标签(默认「审计结论」/「审核结论」)所在行的纵向/横向合并解除,
把标签右侧的内容文字在单行内横向贯通合并到本表最后一列,并统一设为左对齐。
- 清理标签行并保留数据边界内所有行:
- 先合并结论延续行:若结论文字跨多行写在 A 列为空的后续行中,自动合并到标签行;
- 再清空标签行(结论行)中标签右侧的 0 值、公式,只保留真正的结论文字;
- 以 "合计"/"小计"/"总计" 行作为数据边界:
- 若结论在数据上方(标签行下方存在合计行),保留 [标签行+1, 合计行] 之间的所有行
(含 A 列为空、全为 0/公式的数据行),仅删除合计行下方的说明行、空行、孤立全零行;
- 若结论在底稿最下方(合计行在标签行上方或不存在),删除结论下方的所有行;
- 删除范围包含 "审计要点"、"审核要点"、"编制说明"、"注:"、"备注" 等说明行;
- 找不到合计行时,按结论下方是否为空/说明行决定:空/说明行删除,遇到非空数据行则保留其后所有行。
- 也可通过
--mode clear仅清空说明行内容、保留空行。
- 自适应打印版式:所有 sheet 都会重新计算列宽与行高;每个 sheet 设置 A4、
fitToPage=1×1、页边距 0.4″、横/纵向自动、显式打印区域。
- 统一字体样式:全文字体颜色设为黑色、取消加粗、清除单元格底色,
保留字号、字体名、斜体等不变。
- 可选脱敏:表头中
单位名称:...、被审计单位:...、客户名称:...等标签后的
具体名称替换为 [客户名称],避免输出文件泄露客户/被审计单位信息;默认保留原名称,需要脱敏时请使用 --redact。
核心实现位于 scripts/process_audit_sheet.py(基于 openpyxl)。
适用场景
当用户提出以下任一类请求时启用本技能:
- "把这份底稿做成打印版 / 打印出来"
- "标签的两行合并成一行,删掉标签下面的所有内容"
- "删掉标签下面的明细、审计要点/审核要点,只保留标签行"
- "标签文字贯通合并,整个表自适应打印"
- 处理
.xlsx底稿并要求「只调格式、别改字体」或「做成标准打印版」
快速开始
环境要求
- Python 3.x
openpyxl
pip install openpyxl基本用法
脚本路径:scripts/process_audit_sheet.py
# 默认:匹配「审计结论」或「审核结论」,删除标签下方整行,输出 <原名>_打印版.xlsx
python scripts/process_audit_sheet.py <输入.xlsx>
# 指定输出路径
python scripts/process_audit_sheet.py <输入.xlsx> -o <输出.xlsx>
# 自定义标签关键词(多个用逗号分隔)
python scripts/process_audit_sheet.py <输入.xlsx> -o <输出.xlsx> --keyword "审计结论,审核结论,审计说明"
# 仅清空下方内容、保留空行
python scripts/process_audit_sheet.py <输入.xlsx> -o <输出.xlsx> --mode clear
# 以标准版为参照,逐 cell 套用边框/对齐格式(不碰字体)
python scripts/process_audit_sheet.py <输入.xlsx> -o <输出.xlsx> --reference <标准版.xlsx>
# 输出文件脱敏单位/客户名称(默认保留原名称)
python scripts/process_audit_sheet.py <输入.xlsx> -o <输出.xlsx> --redact注意:输入必须是
.xlsx。.xls需先转换为.xlsx。
参数说明
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
input | 是 | – | 输入.xlsx 路径(Windows 建议用 C:/... 或 C:\...) |
-o, --output | 否 | <原名>_打印版.xlsx | 输出路径,不会覆盖原文件 |
--mode | 否 | delete | delete=删除标签下方整行;clear=仅清空内容保留空行 |
--keyword | 否 | 审计结论,审核结论 | 匹配的标签关键词,可用逗号分隔多个 |
--reference | 否 | – | 标准版.xlsx 路径,以之逐 cell 套用边框/对齐格式 |
--redact / --no-redact | 否 | 关闭 | 是否脱敏表头中的单位/客户名称(默认保留原名称) |
处理流程
- 加载工作簿:使用
openpyxl打开输入.xlsx,原文件只读不写。 - 脱敏(可选):对全表单元格扫描,将匹配
单位名称:...、
被审计单位:...、客户名称:...、委托单位:...、受托单位:...、编制单位:...、客户:... 等模式后的具体名称替换为 [客户名称],保留标签本身。默认不开启,可通过 --redact 开启。
- 定位标签:找到含任一
--keyword关键词的单元格(行 R,列不固定)。若命中的单元格属于合并区域,以该合并区域的左上角作为标签位置。默认关键词为
审计结论 和 审核结论,可覆盖 "审计要点"、"审核要点" 等标签所在的同类底稿。
- 记录被删内容坐标:删除前先收集 R+1 及以下非空单元格的坐标,
处理后在摘要中打印数量与坐标,不输出单元格值。
- 解除 R 行及以下合并并保留表格线:解除标签纵向合并、内容文字横向两行合并、明细区合并;
对原合并区域内的所有单元格继承合并区已有的边框样式,避免解除合并后出现表格线缺失。R 以上的合并不动。
- 合并结论延续行、折叠标签纵向合并、清理标签行并删除/清空标签下方说明行/空行:
- 若标签本身跨行合并(如
A7:A8),先解除合并并把整个合并区域内的结论文字收集到标签行,再删除被折叠的下方行; - 合并结论延续行:识别紧跟标签区域、A 列为空或文字且仅含文字的行,将其文本合并到标签行;A 列出现序号即视为数据行,结束识别;
- 多段结论(如标签跨
A8:A10、文字在B8/B9/B10)会被合并为一段; - 清理标签行:保留标签与结论文字,清空标签右侧所有 0 值、公式及其他非文字内容;
- 确定数据边界:
- 先向下找最近的 "合计"/"小计"/"总计" 行;若找到且位于标签行下方,则结论在数据上方,保留标签行到合计行之间的所有行,删除合计行下方的空行/说明行;
- 若未向下找到合计行,则向上查找;若找到且位于标签行上方,或完全找不到合计行且结论下方只有空行/说明行,则结论在底稿最下方,删除结论下方所有行;
- 若完全找不到合计行但结论下方出现非空数据行,则视为结论在数据上方,保留其后所有行;
- 删除/清空说明行:删除全局 "审计要点"/"审核要点" 行,以及边界外的空行、说明行、孤立全零行;
--mode clear时仅清空说明行内容。
- 若标签本身跨行合并(如
- 内容文字贯通合并并保留合并区边框:在 R 行上将内容文字单元格横向合并到工作表实际使用的最后一列(含表头/边框的最右非空列),并统一设为左对齐;
合并前取合并区所有单元格边框的并集并应用到左上角,确保合并后的结论单元格四边边框完整。若标签格只含关键词而无内容,则从标签右侧第一列开始保留空合并区域。
- 自适应列宽:
- 普通单元格按单列最大内容估算;数值按千分位+两位小数格式化后估算,
避免实际打印时出现 # 号截断;
- 横向合并区左上角文字参与「合并区总宽度」计算,确保合并列总宽足够,
避免贯通文字被截断;
- 列宽上限 20、下限 10,CJK 字符系数 2.0、左右留白 3。
- 所有 sheet 都会重新计算列宽,不仅是含标签的 sheet,避免明细表因原始列宽过窄而显示
#号。
- 自适应行高:清除固定行高;对横向合并单元格估算折行行数并设置最小行高,
必要时补充 wrap_text,避免长文本被截断。
- 统一字体样式:全文字体颜色黑色、取消加粗、清除底色,保留字号/字体名/斜体。
- 打印版式设置:A4(
paperSize=9)、fitToWidth=1、fitToHeight=1、
fitToPage=True;页边距四边 0.4″、页眉页脚 0.5″,通过新建 PageMargins 对象整体赋值以覆盖原模板值;横/纵向按内容总宽度自动选择;显式打印区域以最终内容边界计算,避免多出一行空白。
- 清理与保存:清理
delete_rows遗留的行维度条目,保存到输出文件。
隐私与安全
强制约束
绝对禁止在任何输出(包括对话回复、脚本摘要、日志、错误提示、文件名建议等)中出现以下信息:
- 公司/企业/客户全称
- 组织机构名称
- 被审计单位名称
- 任何可能识别具体实体的名称
推荐做法
处理时如需引用文件或内容,仅使用:
- 文件名(不含完整路径中的用户名/公司信息)
- 单元格坐标(如
B24) - Sheet 名称
被审计单位、客户等泛称代替具体名称
脚本输出设计
process_audit_sheet.py 的摘要仅输出 sheet 名称、标签是否命中、贯通合并状态、删除行数以及被删非空单元格的坐标,不输出单元格内容值,确保不泄露数据。
输入 vs 输出
- 输入文件:永远不被修改,保留完整原始数据。
- 输出文件:默认保留表头单位/客户名称;如需脱敏,请加
--redact。
关键假设与限制
| 项目 | 说明 |
|---|---|
| 输入格式 | 仅支持.xlsx,不支持 .xls |
| 标签位置 | 关键词可出现在任意列,不一定在 A 列;默认同时识别「审计结论」「审核结论」;若标签本身纵向合并,会被折叠为单行 |
| 标签行及下方 | 先折叠标签纵向合并、合并结论延续行(A 列序号视为数据行,结束识别),再清理标签行右侧 0 值/公式;以标签下方最近的 "合计"/"小计"/"总计" 行为数据边界:结论在数据上方时保留 [标签行+1, 合计行] 内所有行(含 A 列为空、全 0 行),删除合计行下方说明行/空行;结论在底稿最下方时删除结论下方所有行;无合计行时按下方是否为空/说明行决定 |
| 内容贯通列 | 贯通到工作表实际使用的最后一列(最右非空/有边框列),不再是固定的 ws.max_column |
| 列宽范围 | min_width=10,max_width=20 |
| 横/纵向阈值 | 内容总宽度 > 53 时切换为横向(A4 竖版可打印宽约 7.47″ ≈ 53 字符) |
| 字体处理 | 仅改颜色/加粗/底色,不改字号、字体名、斜体 |
| 标准版参照 | --reference 只复制边框/对齐,不复制字体 |
验证清单
处理完成后建议核对:
- [ ] 含匹配标签的 sheet:结论延续行已合并到标签行;标签行本身右侧的 0 值/公式已清空(只保留标签和结论文字);结论在数据上方时,[标签行+1, 合计行] 数据边界内所有行(含 A 列为空、全 0 行)均保留;结论在底稿最下方时,结论下方无残留内容;标签与数据之间的完全空行及边界下方的说明行/空行/孤立全零行已清理。
- [ ] 内容文字已横向贯通到实际最右使用列,且对齐方式为左对齐;标签本身不再跨行合并。
- [ ] 打印区域
print_area与最终max_row一致,无多余空白行;fitToWidth==1、fitToHeight==1、四边页边距 0.4″、页眉页脚 0.5″。 - [ ] 横向合并区文字(如表头)未被截断,金额/数字列不出现
#号,行高能完整显示折行内容。 - [ ] 字体颜色为黑色、加粗已取消、单元格底色已清除。
- [ ] 每个 sheet 的
page_setup.orientation、paperSize==9、
sheet_properties.pageSetUpPr.fitToPage==True、页边距 0.4 正确。
- [ ] 文件可正常用 Excel/WPS 打开,无合并失效或结构损坏。
- [ ] 对话回复和摘要中不包含任何公司/客户名称等可识别实体信息。
关于 FDE
本 skill 由 杭州智银长河科技有限公司 维护
如有问题、建议或定制需求,欢迎通过以下方式联系我们:
- 公司名称:杭州智银长河科技有限公司
- 联系电话:15128151755
- 电子邮箱:huilaing@infrontsmart.com