我有一个文件夹,里面装满了我用ApacheTika解析的PDF,还有一个模板excel文件,我用它从这些PDF中收集特定信息,并用openpyxl存储
我遇到的问题是使用openpyxl行循环
例如,如果文件夹中只有一个PDF,则这些值将进入:
#C3、C4、F3、C13、C15、C17
但是,如果有多个PDF,每增加一个PDF,索引就会增加20,并存储在同一个excel文件中,因此有两个PDF,它会将信息存储在:C23、C24、F24等等
import glob, os, fnmatch
from tika import parser
import openpyxl
input_path = "../Input"
template = "../Project/template.xlsm"
output_dir = "../Output"
pdfCounter = len(fnmatch.filter(os.listdir(input_path),'*.pdf'))
print(pdfCounter)
def extract_text(file):
parsed = parser.from_file(file)
parsed_text = parsed['content']
# print(parsed_text)
return parsed_text
wb = openpyxl.load_workbook(template, read_only=False, keep_vba=True)
sheet = wb.active
input_file = glob.glob(os.path.join(input_path, '*.pdf'))
for file in input_file:
do_stuff():
sheet['C3'] = value
sheet['C4'] = value2
sheet['F3'] = value3
sheet['C13'] = value4
sheet['C15'] = value5
sheet['C17'] = value6
output_file = os.path.join(output_dir, "report.xlsm")
wb.save(output_file)
我有一个pdfCounter计算文件夹中PDF的#个数,我正试图找出一种方法来增加索引,或者是否有更好的方法
我只是不明白如何基于文件中pdf的#循环,并将索引增加20,这样它就不会像现在这样覆盖相同的内容
编辑:我不能测试这个,但也许它会起作用。我不是在等于pdfCounter的范围内循环,而是在input_file中的文件上循环,以便在当前迭代中访问当前文件。“值”变量应根据当前迭代文件的信息进行更新,然后写入工作表
原件:
您可以使用f字符串轻松创建excel单元格标识符:为列字母组件创建一个变量,为行号组件创建一个变量,然后组合到f字符串中,如下所示。对于行号组件,可以将For循环索引和20的乘积添加到起始行号,以实现每次迭代+20的增量
为了使其工作,您需要在for循环的每次迭代中进行value、value2等计算。大概是这样的:
目标单元格pdfCounter=5的代码输出为:
相关问题 更多 >
编程相关推荐