首页 > 解决方案 > 我可以使用 Tkinter 文件对话框保存 Pandas DataFrame 吗?

问题描述

我对编程相当陌生,甚至对 Tkinter 也很陌生。

我正在设置一个与 SQL Server 一起使用的 GUI,以允许前端用户检索、更新和删除某些信息。

目前我的所有东西都可以正常通信和工作,但我有一个函数可以使用 Pandas 将结果列表导出到 excel 文件中。导出工作正常,但它具有我在 Pandas to_excel 方法中提供的静态名称和目录。

我想使用 Tkinter asksaveasfilename 对话框来允许用户命名和选择文件导出位置,但我似乎无法弄清楚这个对话框是如何工作的(如果可能的话)。对话框代码中是否有一个选项,我可以在其中指定要保存的信息?

def exportFunc():
      pd.DataFrame(data).to_excel("TestList.xlsx", header=False, index = True)
      filedialog.asksaveasfilename(initialdir = "/", title = 'Save File', filetypes = ("Excel File", "*.xlsx"))
      pass

我的代码不会产生任何错误,只是简单地用我尝试的所有内容在对话框中保存任何内容。现在我在我的实际代码中注释掉了文件对话框,但如果有人能指导我找到一个可能的解决方案,我将不胜感激!

标签: pythonsqlpandastkinter

解决方案


10 个月前已发布此内容,但我希望此答案也可以帮助新手在谷歌上搜索此答案。

我如何解决这个问题是注意到 asksaveasfile 函数输出一个包含用户指定的文件路径和文件名的值。例如:

< 关闭文件 u'E:Filepath/AnotherPath/work2.xlsx',模式 'w' at 2119x6710 >

然后我使用 regex 和 replace 方法去除文件路径周围的所有值,一旦完成,to_excel 函数将被视为硬代码。

希望这可以帮助那里的人!

out = tkFileDialog.asksaveasfile(mode='w', defaultextension=".xlsx")
out.close()


restr = str(out)

RegexPrep = restr.replace("'w'", '')

outRegex = re.findall(r"'(.*?)'", RegexPrep)
ToExcelRegex = str(outRegex)

MorePrep = ToExcelRegex.replace("[",'')
MorePrep = MorePrep.replace("]",'')
MorePrep = MorePrep.replace("'",'')
Final = MorePrep.strip()

find.to_excel(Final, index=False)

推荐阅读