🦀 ClawHub
GI Excel PDF Process
by @laimiaohua
Process Excel and PDF files - extract data, parse tables, generate reports. Use when working with .xlsx, .xls, .csv, .pdf files, or when the user mentions sp...
TERMINAL
clawhub install gi-excel-pdf-process📖 About This Skill
name: gi-excel-pdf-process description: Process Excel and PDF files - extract data, parse tables, generate reports. Use when working with .xlsx, .xls, .csv, .pdf files, or when the user mentions spreadsheet, PDF extraction, or report generation. tags: ["excel", "pdf", "spreadsheet", "data-extraction", "report", "python"]
Excel / PDF 处理
处理 Excel 与 PDF 文件:提取数据、解析表格、生成报告。适用于数据导入导出、报表生成、文档解析等场景。
何时使用
.xlsx、.xls、.csv、.pdf 文件可执行脚本:scripts/excel_extract.py(Excel→CSV)、scripts/pdf_extract.py(PDF 文本/表格提取),依赖见 scripts/requirements.txt。
Excel 处理
读取 Excel
import pandas as pd读取整个文件
df = pd.read_excel("file.xlsx", sheet_name=0) # 第一个 sheet指定 sheet
df = pd.read_excel("file.xlsx", sheet_name="Sheet1")读取 CSV
df = pd.read_csv("file.csv", encoding="utf-8")
写入 Excel
# 单 sheet
df.to_excel("output.xlsx", index=False)多 sheet
with pd.ExcelWriter("output.xlsx") as writer:
df1.to_excel(writer, sheet_name="汇总", index=False)
df2.to_excel(writer, sheet_name="明细", index=False)
常用操作
df[df['列名'] > 0]df.drop_duplicates(subset=['列名'])pd.concat([df1, df2]) 或 pd.merge(df1, df2, on='key')df.pivot_table(values='val', index='row', columns='col', aggfunc='sum')依赖
pip install pandas openpyxl # xlsx 需要 openpyxl
PDF 处理
提取文本
import pdfplumberwith pdfplumber.open("file.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
if text:
print(text)
提取表格
with pdfplumber.open("file.pdf") as pdf:
page = pdf.pages[0]
tables = page.extract_tables()
for table in tables:
# table 为二维列表
for row in table:
print(row)
依赖
pip install pdfplumber
若需 OCR(扫描版 PDF):pip install pdf2image pytesseract,并安装 Tesseract。
报告生成流程
1. 数据准备:从 API/DB 或 Excel 获取数据,用 pandas 清洗
2. 计算/聚合:按业务逻辑生成汇总表
3. 输出:
- Excel:df.to_excel()
- PDF:可用 reportlab 或先生成 Excel 再转 PDF
注意事项
utf-8、gbk,先尝试 utf-8df.fillna(0) 或 df.dropna() 按需处理pd.to_datetime(df['date_col']) 统一格式