You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用openpyxl按固定行偏移增量写入PDF解析数据到Excel模板

解决方案

核心逻辑

你需要的偏移规则可以通过遍历PDF时的索引计算实现:

  • 第1个PDF的偏移量为 0
  • 第N个PDF的偏移量为 (N-1)*20
    所有目标单元格的行号直接加上对应偏移量即可得到写入位置,完全匹配你给出的示例规则。

优化后完整代码

import glob, os
from tika import parser
import openpyxl

input_path = "../Input"
template = "../Project/template.xlsm"
output_dir = "../Output"

# 提前创建输出目录避免保存报错
os.makedirs(output_dir, exist_ok=True)

def extract_text(file):
    parsed = parser.from_file(file)
    return parsed['content']

# 加载模板
wb = openpyxl.load_workbook(template, read_only=False, keep_vba=True)
sheet = wb.active

# 获取所有PDF文件列表
pdf_files = glob.glob(os.path.join(input_path, '*.pdf'))

# 枚举遍历:idx从0开始,刚好对应偏移量计算
for idx, file in enumerate(pdf_files):
    # 计算当前PDF的行偏移值
    offset = idx * 20
    # 这里替换成你自己的信息提取逻辑,拿到对应value
    text = extract_text(file)
    # 以下为你的信息提取逻辑替换位置
    value = "" # 替换为从text提取的对应字段
    value2 = ""
    value3 = ""
    value4 = ""
    value5 = ""
    value6 = ""
    # 写入单元格:行号=基准行号+偏移量
    sheet[f'C{3 + offset}'] = value
    sheet[f'C{4 + offset}'] = value2
    sheet[f'F{3 + offset}'] = value3
    sheet[f'C{13 + offset}'] = value4
    sheet[f'C{15 + offset}'] = value5
    sheet[f'C{17 + offset}'] = value6

# 保存文件
output_file = os.path.join(output_dir, "report.xlsm")
wb.save(output_file)
wb.close()

关键优化说明

  • 去掉了冗余的pdfCounter统计,枚举遍历会自动处理所有匹配到的PDF,新增/减少PDF文件不需要调整代码逻辑
  • 单元格写入逻辑移入循环内部,通过f-string动态拼接单元格位置,完全避免覆盖问题
  • 新增了输出目录自动创建逻辑,避免目录不存在时保存报错
  • 增加了工作簿关闭操作,避免资源占用

内容的提问来源于stack exchange,提问作者WarriorKarna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 02:36:04