Python中如何将PDF内容写入Excel文件?
试了一下。感觉不像啊。 只能插入图片。
Python中如何将PDF内容写入Excel文件?
13 回复

import pdfplumber
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
def pdf_to_excel(pdf_path, excel_path):
"""
将PDF表格数据提取到Excel文件
"""
all_tables = []
with pdfplumber.open(pdf_path) as pdf:
for page_num, page in enumerate(pdf.pages):
# 提取当前页的所有表格
tables = page.extract_tables()
for table_num, table in enumerate(tables):
if table: # 确保表格不为空
# 将表格转换为DataFrame
df = pd.DataFrame(table[1:], columns=table[0])
# 添加来源信息(可选)
df['来源页'] = page_num + 1
all_tables.append(df)
if not all_tables:
print("未在PDF中找到表格数据")
return
# 合并所有表格
combined_df = pd.concat(all_tables, ignore_index=True)
# 写入Excel文件
with pd.ExcelWriter(excel_path, engine='openpyxl') as writer:
combined_df.to_excel(writer, sheet_name='PDF数据', index=False)
# 自动调整列宽
worksheet = writer.sheets['PDF数据']
for column in worksheet.columns:
max_length = 0
column_letter = column[0].column_letter
for cell in column:
try:
if len(str(cell.value)) > max_length:
max_length = len(str(cell.value))
except:
pass
adjusted_width = min(max_length + 2, 50)
worksheet.column_dimensions[column_letter].width = adjusted_width
print(f"数据已成功写入 {excel_path}")
print(f"共提取 {len(all_tables)} 个表格,{len(combined_df)} 行数据")
# 使用示例
if __name__ == "__main__":
# 指定PDF文件路径和输出的Excel文件路径
pdf_file = "input.pdf" # 替换为你的PDF文件路径
excel_file = "output.xlsx" # 输出的Excel文件名
pdf_to_excel(pdf_file, excel_file)
安装依赖:
pip install pdfplumber pandas openpyxl
代码说明:
- pdfplumber:专门用于PDF文本和表格提取的库,比PyPDF2更适合表格数据
- pandas:数据处理,将提取的表格转换为DataFrame
- openpyxl:生成Excel文件并调整列宽
功能特点:
- 自动提取PDF中所有页面的表格
- 保留表格的列标题
- 添加来源页码便于追溯
- 自动调整Excel列宽
- 处理多表格合并
使用提示:
- 如果PDF是扫描件(图片格式),需要先用OCR工具转换
- 复杂表格可能需要调整pdfplumber的提取参数
- 确保PDF中的表格是标准格式,手绘表格可能无法识别
一句话建议: 用pdfplumber提取表格数据再用pandas写入Excel最可靠。

难道得用 vba ???
等待 v 友们的指导。。。。。。。。。。
这应该是个 OLE 对象?
#5 好像是。但不好插入吧
COM 接口可能可以实现?。
#7 好像蛮复杂的

恩 c++的接口,不知道 python 有没有方便的绑定可以用。。你可以找找 除了这个还想不到其他的好办法,OOXML 等 不知道对于这个支持不支持
#10 估计够呛
xlwt ?

