我正在尝试创建一个 python tkinter 可执行文件,它显示来自 Oracle 数据库的信息,并且还可以将该信息导出到 MS Word (.docx) 文档中。Excel 也是如此。
目前,每当我通过 PyCharm 运行脚本时,我都可以创建一个新的 Word 文档和一个新的 Excel 电子表格;但是,在使用 pyinstaller 创建可执行文件后,我无法导出新的 Word 文档,但可以导出新的 Excel 电子表格。
我想我要么需要找到一些未知的 Word 模块来实际创建 Word 文档,就像 xlsxwriter 创建 Excel 表格一样;或者我需要以某种方式将 Word 文件捆绑到可执行文件中。
Python 3.7、PyCharm 2019.1.1 社区版。模块 - tkinter、python-docx、docx-mailmerge、xlsxwriter、pyinstaller
我正在使用 docx-mailmerge 并将数据合并到 Word 文档模板中,但后来我尝试使用 python-docx 尝试“创建”我自己的 Word 文档。(来自 python-docx 的文档:“实际上,它只允许您对现有文档进行更改;只是如果您从一个没有任何内容的文档开始,一开始可能会觉得您正在创建一个从头开始。”)
我尝试使用 pyinstaller 创建文件夹分发和单文件可执行文件。我认为我最好的选择是创建一个文件夹,然后手动将 Word 模板添加到某个子文件夹中,但我不知道是哪个。如果是这种情况,我相信我可以使用任何一个 Word 模块。
我可以使用 xlsxwriter 导出 Excel 电子表格,没问题。
我添加了一个 try/except 语句来捕获错误(并在应用程序中添加了一个显示错误名称的标签),并且我浏览了 python 文档中的整个异常列表,但只有包罗万象的“除了:”会抓住的。
def data_pull(user, pw, _id):
# connects to oracle and pulls data into a list
class App(Frame):
# a login frame not shown
# self.create_widgets()
def create_widgets(self):
# various StringVar() variables
# oracle data entry query (=_id)
# Button that calls entry query
# frames and scrolledtext for displaying the data
# Button to export to word
# Button to export to excel
def word_export(self, lst, path):
# export using python-docx
def excel_export(self, lst, path):
# export using xlsxwriter
def entry_callback(self):
# a = data_pull(user, pw, _id)
# parse a into a long string
# pass string to scrolledtext widget
当它从 PyCharm 内部运行时,Word 文档的创建没有问题,但是当它从可执行文件运行时,什么也没有发生。