如何使用PyPDF2读取目录下多个PDF文件并按列存入XLS文件
多PDF目录批量提取内容写入Excel实现
完整可运行代码
import os import PyPDF2 import xlsxwriter # 配置参数:修改为你自己的PDF存放目录和输出Excel路径 PDF_DIR = "./pdf_files" OUTPUT_XLS = "./pdf_content.xlsx" # 初始化Excel工作簿和工作表 workbook = xlsxwriter.Workbook(OUTPUT_XLS) worksheet = workbook.add_worksheet("PDF内容") # 写入表头,可根据实际需求调整 worksheet.write(0, 0, "PDF文件名") worksheet.write(0, 1, "提取内容") # 行号计数器,从第二行开始写数据 row_idx = 1 # 遍历目录下所有PDF文件 for root, dirs, files in os.walk(PDF_DIR): for file in files: # 筛选后缀为pdf的文件,忽略大小写 if file.lower().endswith(".pdf"): pdf_path = os.path.join(root, file) try: # 读取PDF内容 with open(pdf_path, 'rb') as f: read_pdf = PyPDF2.PdfFileReader(f) # 这里默认取第一页内容,要提取所有页可以循环遍历页码 if read_pdf.getNumPages() > 0: page = read_pdf.getPage(0) page_content = page.extractText() # 内容格式化,可根据你的结构化需求调整规则 text = page_content.replace("\n", " ").replace("\t", " ").replace(" ", "") # 写入Excel,第一列存文件名,第二列存提取的内容 worksheet.write(row_idx, 0, file) worksheet.write(row_idx, 1, text) row_idx += 1 except Exception as e: # 读取失败的文件标记错误信息 worksheet.write(row_idx, 0, file) worksheet.write(row_idx, 1, f"读取失败:{str(e)}") row_idx += 1 # 保存关闭Excel workbook.close()
代码修改说明
- 新增
os模块调用,通过os.walk递归遍历指定目录下的所有文件,筛选后缀为.pdf的文件生成待处理列表,支持嵌套子目录内的PDF识别 - 补全了xlsxwriter的Workbook、Worksheet初始化逻辑,提前设置表头方便内容查看,新增行号计数器自动累加写入位置,不会出现内容覆盖
- 新增异常捕获逻辑,避免个别损坏的PDF文件导致整个程序中断,读取失败的文件会在Excel中标记错误原因
- 保留了你原有的内容格式化规则,若需要结构化提取指定字段,可在
text = page_content...之后新增正则匹配、关键词截取等逻辑
内容的提问来源于stack exchange,提问作者Carlos Paes
相关产品推荐
相关产品推荐

