全能本地文档处理专家

👤 李杰 📦 v1.0.0 ⭐ 4.5 ⬇️ 1K 下载
📄 办公效率 免费

📖 技能介绍


name: smartdoc version: "1.0.0" description: 全能文档处理专家——创建、编辑、转换和分析 xlsx/docx/pdf/pptx/csv/md 等格式,纯本地 Python,零 API Key。覆盖 Excel 公式图表、Word 中文排版模板、PDF 合并拆分水印加密、PPT 演示、Markdown 格式转换、数据分析报告、批量处理。触发词:文档 Excel Word PDF PPT 表格 报告 转换 合并 提取 排版 批量 xlsx docx pptx csv watermark encrypt chart formula template office


SmartDoc 智能文档大师 📄

全能文档处理专家。一个 Skill 覆盖 Excel、Word、PDF、PPT、Markdown、CSV——创建、编辑、转换、分析,纯本地 Python,零 API Key。

Quick Reference

用户意图 操作 引擎
创建/编辑 Excel 公式、样式、图表、数据验证、条件格式 openpyxl + pandas
创建/编辑 Word 中文排版、模板填充、页眉页脚、目录 python-docx
读取 PDF 提取文本、表格 PyMuPDF + pdfplumber
合并/拆分 PDF 多文件合并、按页拆分 PyMuPDF
PDF 水印/加密 添加水印、密码保护 PyMuPDF + pypdf
创建/编辑 PPT 幻灯片、图表、中文排版 python-pptx
格式互转 MD↔Word↔PDF↔Excel↔CSV 见转换矩阵
数据分析报告 数据→图表→多格式报告 pandas + openpyxl + python-docx
批量处理 批量转换、水印、提取 自动分块

何时使用

当以下任意条件满足时激活本技能:

  1. 用户要求创建、编辑或格式化 Office 文档(Excel / Word / PPT)
  2. 用户要求读取、合并、拆分 PDF 文件
  3. 用户要求在文档格式之间转换(如 Markdown 转 Word)
  4. 用户要求从文档提取数据、文本或表格
  5. 用户要求批量处理多个文档
  6. 用户要求根据数据生成分析报告
  7. 用户要求对文档添加水印、加密或解密
  8. 用户提到中文文档排版优化
  9. 用户使用关键词:文档、表格、报告、PPT、PDF、xlsx、docx、转换、合并、提取、排版

核心原则

🔒 安全红线(绝不违反)

  • 永不覆盖原文件 — 输出到新路径(添加 _output 后缀),除非用户明确要求覆盖
  • 不执行宏/VBA — 跳过所有嵌入脚本
  • 纯本地处理 — 不联网、不上传、不发送任何数据到外部服务
  • 不暴力破解 — 遇到加密 PDF 仅提示需要密码

🎯 质量底线

  • 数据完整性 — 长数字/身份证号/手机号必须存为文本(Excel 静默截断超过 15 位的数字)
  • 格式保真 — 编辑现有文档时保留原有模板、样式、合并单元格、打印设置,除非明确要求修改
  • 中文优先 — 中英文间自动加空格,中文字体同时设置 font.namerFonts.set(qn('w:eastAsia'), ...)
  • 公式安全 — 复制/编辑公式后必须验证引用范围,交付前零公式错误

📗 Excel 处理

引擎选择:

任务类型 引擎 原因
公式、样式、图表、数据验证 openpyxl 支持单元格级格式控制
数据分析、清洗、重塑 pandas DataFrame 操作更高效
大文件(>50MB) openpyxl read_only/write_only 防止内存溢出

关键规则

规则 错误写法 正确写法
长数字存为文本 pd.read_excel('f.xlsx') pd.read_excel('f.xlsx', dtype={'身份证号': str})
合并单元格取值 ws['B2'].value 先查 ws.merged_cells.ranges,映射到左上角
公式引用验证 复制 =SUM(A1:A10) 到 B 列 检查是否应变为 =SUM(B1:B10),避免静默偏移
日期序列号 直接当日期处理 注意 1900 闰日 bug,部分工作簿用 1904 系统
数据验证下拉 手动写入选项 DataValidation(type="list", formula1='"选项1,选项2"')
条件格式进度条 手动设置颜色 DataBarRule(start_type='num', start_value=0, end_type='num', end_value=1)

交付前检查清单

  • [ ] 长数字列(身份证/手机/订单号)已设为文本格式
  • [ ] 公式无 #REF!#DIV/0!#VALUE!#NAME?、循环引用
  • [ ] 表头有样式(加粗、背景色、居中),列宽自适应
  • [ ] 原有模板、命名范围、打印设置未被破坏

Before / After:长数字精度丢失

❌ 错误:默认读取,身份证号变成科学计数法
   df = pd.read_excel('users.xlsx')
   → 身份证 110101199001011234 变成 1.1010119900101e+17(后 3 位丢失)

✅ 正确:指定 dtype 为 str
   df = pd.read_excel('users.xlsx', dtype={'身份证号': str, '手机号': str})
   → 身份证完整保留:110101199001011234

📘 Word 处理

引擎: python-docx

关键规则

规则 说明
中文字体必须双设置 font.name = '微软雅黑' rFonts.set(qn('w:eastAsia'), '微软雅黑'),缺一不可
公文边距默认值 上 3.7cm、下 3.5cm、左 2.8cm、右 2.6cm
图片宽度 不超过页面可用宽度 80%,保持宽高比
页眉页脚 通过 section.header / section.footer 设置,页码用 OxmlElement('w:fldChar') 插入域代码
目录 插入 TOC 域代码,提示用户在 Word 中右键"更新域"
模板填充 搜索 {{key}} 占位符替换为值,必须同时扫描段落和表格

Before / After:模板填充

❌ 错误:只替换段落中的占位符,忽略表格
   → 表格里的 {{日期}} 仍然显示占位符

✅ 正确:遍历 doc.paragraphs + doc.tables 中所有 cell
   → 段落和表格内的占位符都被替换

📕 PDF 处理

引擎分工:

操作 引擎 关键 API
提取文本 PyMuPDF page.get_text()
提取表格 pdfplumber page.extract_tables()
合并 PDF PyMuPDF merged.insert_pdf(pdf)
拆分 PDF PyMuPDF new_pdf.insert_pdf(pdf, from_page=i, to_page=i)
添加水印 PyMuPDF page.insert_text(..., morph=(center, mat))
加密/解密 pypdf writer.encrypt() / reader.decrypt()

关键规则

规则 说明
PDF 不可直接编辑 "编辑 PDF" = 提取内容 → 修改 → 重新生成
中文水印必须指定字体文件 fontfile="C:/Windows/Fonts/msyh.ttc",内置字体 helv 无中文字形
水印旋转只能用 morph insert_textrotate 只接受 0/90/180/270,自定义角度必须用 morph=(center, matrix)
合并时保留书签 fitz.get_toc() / set_toc() 保留原书签
扫描件 PDF 纯图片无文本层,必须 OCR(推荐 PaddleOCR),需提醒用户
fitz.open 必须用 with 批量处理时未关闭文件句柄会耗尽资源

Before / After:中文水印

❌ 错误:用内置字体 + rotate 参数
   page.insert_text(center, "机密文件", fontname="helv", rotate=45)
   → ValueError: bad rotate value(rotate 只支持 0/90/180/270)
   → 即使不报错,helv 字体也无法渲染中文

✅ 正确:用系统字体 + morph 参数
   mat = fitz.Matrix(cos, sin, -sin, cos, 0, 0)
   page.insert_text(center, "机密文件", fontfile="msyh.ttc", morph=(center, mat))
   → 中文正常渲染 + 任意角度旋转

📙 PPT 处理

引擎: python-pptx

访问小葱技能站7w4.net,解锁更多实用的AI技能插件。

关键规则

规则 说明
字体必须在 run 级别设置 p.font.size 无效,必须 run = p.add_run(); run.font.size = Pt(44)
默认 16:9 宽屏 slide_width = Inches(13.333), slide_height = Inches(7.5)
中文标题字体 微软雅黑/思源黑体(正文),等线/方正大标宋(标题)
单页文字限制 不超过 6 行,每行不超过 20 个中文字符
图表配色 使用专业色板,避免默认彩色

Before / After:PPT 字体设置

❌ 错误:在段落级别设置字体
   p.text = "项目汇报"
   p.font.size = Pt(44)       # 无效!保存后字体丢失
   p.font.bold = True          # 无效!

✅ 正确:在 run 级别设置字体
   run = p.add_run()
   run.text = "项目汇报"
   run.font.size = Pt(44)      # 有效
   run.font.bold = True         # 有效

🔄 格式转换

转换矩阵

源 → 目标 引擎 注意事项
Markdown → Word python-docx 解析 MD 标题/列表/表格/代码块映射为 Word 样式
Markdown → PDF weasyprint / fitz MD→HTML→PDF,需处理中文字体
Markdown → PPT python-pptx 每个 # 标题生成一张幻灯片
Excel → CSV pandas 输出用 UTF-8 BOM 编码(Excel 兼容)
Excel → Markdown pandas df.to_markdown()
Word → PDF LibreOffice 命令行 格式保真度远高于纯 Python 方案
Word → Markdown python-docx 提取文本+结构映射
PDF → 文本 PyMuPDF page.get_text()
PDF → Markdown PyMuPDF 提取文本+尝试还原结构
CSV → Excel pandas + openpyxl 自动类型推断,长数字列指定 dtype=str

Before / After:MD→Word 表格处理

❌ 错误:遇到 | 表格行直接 pass/跳过
   → Markdown 中的关键数据表格被静默丢弃,用户打开 Word 发现表格不见了

✅ 正确:收集连续 | 行 → 解析 → doc.add_table()
   → 所有 Markdown 表格完整保留到 Word 文档中

Word → PDF 最佳方案

# 推荐:LibreOffice 命令行(格式保真度最高)
soffice --headless --convert-to pdf input.docx --outdir ./output/

# Windows
"C:\Program Files\LibreOffice\program\soffice.exe" --headless --convert-to pdf input.docx

Markdown → Word 转换规则

Markdown 元素 Word 映射 注意
# / ## / ### add_heading(level=N)
- item / * item List Bullet 样式
1. item List Number 样式
> quote Intense Quote 样式
```code``` Normal + Consolas 9pt 收集多行,整体设为等宽字体
\| table \| add_table() 收集连续 | 行,解析后创建表格,不能丢弃
**bold** / *italic* Run 级别加粗/斜体 需解析行内格式

📊 智能报告生成

报告结构模板

一、摘要(3-5 句话概括核心发现)
二、数据概览(describe() 统计表 + 行数/列数/缺失值)
三、关键发现(top N 洞察,每条配数据支撑)
四、图表分析(柱状图/饼图/折线图,标题和轴标签必须中文)
五、结论与建议(可执行的下一步行动)

关键规则

规则 说明
图表标题/轴标签/图例 必须为中文
数值格式 千分位分隔符,金额用 ¥ 符号
日期格式 统一 YYYY年MM月DD日
百分比 保留 1-2 位小数
Excel 图表 openpyxl.chartBarChart/PieChart/LineChart + Reference
Word 表格 add_table(style='Light Grid Accent 1')

⚡ 批量处理

批量处理规则

步骤 操作
1. 预检 列出待处理文件及数量,确认后再执行
2. 执行 单文件失败不中断整体,try/except 记录失败项
3. 输出 摘要:成功 N 个 / 失败 M 个 / 跳过 K 个
4. 断点 记录已处理文件,重跑时自动跳过

输出命名

  • 单文件:源文件名 + _output / _converted 后缀
  • 批量输出:output_YYYYMMDD_HHMMSS/ 子目录
  • 临时文件:temp_ 前缀,完成后自动清理

通用工作流

识别意图 → 确定格式 → 查表选引擎 → 检查依赖 → 执行 → 验证 → 报告结果

依赖安装

首次使用自动检查并安装:

pip install openpyxl python-docx PyMuPDF python-pptx pandas pdfplumber pypdf
# 注意:PyMuPDF 安装后 import 名为 fitz;pypdf 6.x 已移除 PdfMerger

大文件策略(>50MB)

格式 策略
Excel openpyxl read_only 读 / write_only
PDF fitz 逐页处理,不一次加载
CSV pandas.read_csv(chunksize=10000) 分块迭代

中文排版规范

中英文混排

  • 中英文之间加半角空格:"使用 Python 处理"而非"使用Python处理"
  • 中文与数字之间加半角空格:"共 10 个文件"而非"共10个文件"
  • 全角标点后不加空格,半角标点后加一个空格
  • 英文专有名词保持原始大小写(Python、Excel、PDF)

标点符号

  • 中文正文用全角标点(,。;:!?""''())
  • 代码和技术文档用半角标点
  • 省略号用 ……(六个点),不用 ...
  • 连接线用 ——(两个破折号)

字体方案

场景 中文字体 英文字体
正文 微软雅黑 / 苹方 Segoe UI / Helvetica
标题 等线 / 方正大标宋 Arial / Georgia
代码 Consolas / Source Code Pro
表格 微软雅黑 Segoe UI

错误处理

错误场景 处理方式
文件不存在 提示路径,建议用 Glob 查找
文件被占用 提示关闭文件,输出到替代路径
格式不支持 列出支持的格式,建议替代方案
库未安装 自动 pip install,失败则提示手动安装
编码错误 依次回退 UTF-8 → GBK → GB18030 → latin1
大文件超时 自动分块,单页/单表为单位
加密 PDF 提示需要密码,不尝试暴力破解
空文件/空表格 提示内容为空,不生成空输出文件
扫描件 PDF 提示需 OCR(推荐 PaddleOCR/pytesseract)

使用示例

示例 1:创建项目进度 Excel

用户:帮我创建一个项目进度跟踪表

→ 引擎:openpyxl
→ 操作:带样式表头 + 数据验证(状态下拉框)+ 条件格式(进度数据条)
→ 输出:project_tracker.xlsx

示例 2:PDF 合并

用户:把 reports 文件夹下所有 PDF 合并成一个

→ 引擎:PyMuPDF
→ 操作:扫描目录 → 按文件名排序 → 逐个插入 → 保留书签
→ 输出:reports_merged.pdf

示例 3:Markdown 转 Word

用户:把会议纪要的 Markdown 转成正式的 Word 文档

→ 引擎:python-docx
→ 操作:解析 MD 标题/列表/表格/代码块 → 映射为 Word 样式 → 应用中文公文格式
→ 输出:meeting_notes.docx

示例 4:数据分析报告

用户:分析这个 Excel 的销售数据,生成一份报告

→ 引擎:pandas + openpyxl + python-docx
→ 操作:统计概览 → 关键发现 → 图表 → 结论建议
→ 输出:sales_report.docx + sales_report.xlsx

示例 5:批量 Word 转 PDF

用户:把 contracts 目录下所有 Word 转成 PDF

→ 引擎:LibreOffice 命令行
→ 操作:扫描目录 → 确认文件列表 → 批量转换 → 输出摘要
→ 输出:output_20260616/ 目录

示例 6:PDF 加密

用户:给这份 PDF 加个密码

→ 引擎:pypdf
→ 操作:读取 → 复制所有页面 → encrypt() → 保存
→ 输出:encrypted.pdf

示例 7:Word 模板批量填充

用户:用这个合同模板,把 Excel 里的 50 个员工信息填进去,生成 50 份合同

→ 引擎:python-docx + pandas
→ 操作:读取 Excel 数据 → 遍历每行 → 替换模板占位符(段落+表格) → 逐个保存
→ 输出:contracts/ 目录下 50 个 docx 文件

🤖 AI 评测

这个 Skill 功能非常全面,一个就能处理文档、表格、PDF、PPT 等各种常见格式,对中文用户很友好,比如自动处理中英文混排、中文字体、CSV 编码等问题。它把每种操作的注意事项都写得很清楚,还提供了正确和错误写法的对比,新手也能看懂。缺点是目前只有使用指南,没有现成的代码模板可以直接调用。总体来说质量不错,覆盖了文档处理的绝大部分场景。

📊 多维度评分

适应性4.6
规范性4.6
有效性4.5
可靠性4.2
可信度5

📁 包含文件 (3 个)

📄 SKILL.md 15.3 KB
📄 _meta.json 421 B
📄 skill-card.md 3.4 KB