【问题标题】:Python PDF merging from an excel for loopPython PDF从excel for循环合并
【发布时间】:2020-08-14 13:28:13
【问题描述】:

我有一张 Excel 表格,里面有一些下拉列表。 (在职的) 现在我在 Python 中,试图从 excel 表(xlsx 文件)中读取日期并将数据读入 for 循环(也在工作)

我有 3 列有一个名称,名称 ref。对于 pdf 文件,所有 pdf 文件都位于同一个位置。 我需要将 3 个随机 PDF 文件合并为一个。

所以我可以看到我可以使用 PyPDF2...但是我该如何在我的 for 循环中执行它,以便它会逐行读取 3 个值并将文件逐行合并到一个 PDF 中?

我的代码是这台 ATM,我正在逐行从 xlsx 表中获取正确的值。

import os
import pandas as pd
from PyPDF2 import PdfFileMerger

data = pd.read_excel(r'Resources\liste.xlsx', sheet_name='Ark1', skiprows=3)
dataread = pd.DataFrame(data)
for index, row in dataread.iterrows():
    print(index, row)

更新!

@JacoblRR 将我指向https://stackoverflow.com/questions/17104926/pypdf-merging-multiple-pdf-files-into-one-pdf/17304537#17304537 我可以看到如何将文件放入 PyPDF2,我的问题是我从 excel 表中逐行获取 4 个值。 前任。 Value1=u6AB, Value2=FUO0002, Value3=FUO0004, Value4=u34_driblinger

然后我有一个位置 c:\users\myuser\document\master\pdf\ 在这里我有 u6ABx.pdf、FUO0002_xxxxxxx.pdf 和 FUO0004_xxxxxxx.pdf 这三个文件我想合并到 u34_driblinger.pdf

我怎么能从前任那里做到这一点。来自链接,例如:

for index, row in dataread.iterrows():
    print(index, row)
    try:
    # if doc exist then merge
        if os.path.exists(row):
            input = PyPDF2.PdfFileReader(open(row, 'rb'))
            merger.append((input))
        else:
            print(f"problem with file {row}")

    except:
        print("cant merge !! sorry")
    else:
        print(f" {row} Merged !!! ")

merger.write("Merged_doc.pdf")

【问题讨论】:

  • @JacobIRR 我会尝试看看它,我想是一些前任。可以使用:-)
  • @JacobIRR 和其他人,已经对这个问题进行了更新:-) 希望有人可以帮助/指导我。

标签: python pypdf2


【解决方案1】:

您不能将 pd.Series 类型的数据框记录提供到 os.path.exists 中,因为如果您的脚本与 PDF 文件不在同一文件夹中,您的 Excel 包含必须提供完整文件路径的文件名。

for index, row in dataread.iterrows():
    print(index, row)
    filepath =os.join('c:\users\myuser\document\master\pdf', row.iat[0])
    try:
    # if doc exist then merge
        if os.path.exists(filepath):
            input = PyPDF2.PdfFileReader(open(filepath, 'rb'))
            merger.append((input))
        else:
            print(f"problem with file {row}")

    except:
        print("cant merge !! sorry")
    else:
        print(f" {row} Merged !!! ")

merger.write("Merged_doc.pdf")

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 2017-08-17
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    相关资源
    最近更新 更多