在我的工作中,我收到 PDF 文件中的订单,而我需要将它们重写到 Excel 表格中。Excel 文件和 PDF 文件每次都有精确的结构,不会改变,所以我决定自动化这个过程并创建 python 脚本来为我做这件事。
目前,我即将结束,我只需要将最后一个数据写入 excel 文件,但我遇到了严重的问题,非常严重,我可能需要重写/重新设计我的一半代码(大约有 500 行 atm )。
“问题”是,我将代码分成 3 个文件:
- main(我正在执行的那个)
- 函数(存储所有复杂的逻辑函数)
- config(存储常量和配置的地方)
然而,问题是,我在 xlsxwritter 的主文件构造函数中有创建 Excel 文件和工作表。
正是这个:
# Creation of new EXCEL file
xlsx_file = 'Red_vyplaty_' + termin_file + '.xlsx'
print 'Creating excel file "%s"' % xlsx_file
excel_file = xlsxwriter.Workbook(xlsx_file)
# Adding sheet, called "Listky_obce_nad_300"
obce_nad_300_sheet = excel_file.add_worksheet('Listky_obce_nad_300')
print 'Adding data sheet "Listky_obce_nad_300" into "%s"' % (xlsx_file)
obce_nad_300_sheet.set_column(0, 0, 2)
obce_nad_300_sheet.set_column(1, 1, 2)
但是,我需要(或者想要更准确)在函数文件中创建一个函数,该函数将有一个输入,并基于这个输入,它将从 config-constants 文件中获取数据,并将它们写入此工作表(obce_nad_300_sheet )。
问题是,如果我创建如下函数:
def create_footer(suma_cell, starting_row, flag):
"""
Function to creade footer of listok
flag = 0 / 1 / 2 (data sheet where to write header)
"""
obce_nad_300_sheet.write(row, 4, 'Test')
它会(显然)抛出异常,全局变量 obce_nad_300_sheet 不存在,bla bla bla ..我相信你们都知道:)
我知道,我有两种解决方法:
- 将整个创建、添加和写入工作表从 main.py 移动到 functions.py
- 可以,但是,这对我来说工作量太大了,而且这些新函数中的大多数只会调用一个 xlsxwritter 函数,所以有点浪费时间
- 在 main.py 文件中创建这些新函数
- 虽然我不确定它是否会起作用,但我敢肯定,在 function.py 文件中包含一些函数,而在 main.py 文件中包含其他函数,这将是完全丑陋的,并且违反了我的清晰代码规则。
但是我想要第三个选项,我还不知道,并且既简单又“好”???:)
PS:不,xlsxWritter 无法打开/读取 excel 文件,它只能创建一个新文件,所以如果我在函数中定义它,它将重写我之前写入文件的所有内容。