2016-10-27 23 views
4

私は一般的にPythonとプログラミングに慣れていません。私は、Excelからデータをインポートし、分析して、DataFrameから新しいデータを別のExcelファイルにエクスポートする、作成したコード用のGUIを構築しようとしています。私は以前にこのコードを使用し、今私は、彼らは、ファイルを保存したいユーザーを尋ねるプロンプトが必要です。tkinterを使用してDataFrameをExcelファイルに保存するようにユーザーに促す方法はありますか?

writer = pd.ExcelWriter("Results.xlsx", engine="xlsxwriter") 
data.to_excel(writer, index=False, sheet_name="Results") 
worksheet = writer.sheets["Results"] 
writer.save() 

残念ながら、私はasksaveasfilenameを使用する場合、それは新しいExcelファイルを保存するために取得することはできませんが。ファイル保存をテストするために私が使ってきたことは次のとおりです。

from tkinter import * 
from tkinter.filedialog import askopenfilename 
from tkinter.filedialog import asksaveasfilename 
from tkinter.messagebox import showerror 
import pandas as pd 

class Analysis: 
    def __init__(self, master): 
     self.master = master 
     master.title("Test") 

     self.message = "Select an Excel file to import." 
     self.label_text = StringVar() 
     self.label_text.set(self.message) 
     self.label = Label(master, textvariable=self.label_text) 

     self.button = Button(master, text="Browse", command=self.load_file) 
     self.label.grid(row=0, column=0, columnspan=2, sticky=W) 
     self.button.grid(row=1, column=0, sticky=W) 

    def load_file(self): 
     file = askopenfilename(filetypes=(("Excel files", "*.xlsx"), 
              ("All files", "*.*"))) 
     if file: 
      try: 
       data = pd.read_excel(file,sheetname="Sheet1") 
       #this doesn't save anything 
       savefile = asksaveasfilename(mode="w",filetypes=(("Excel files", "*.xlsx"), 
                  ("All files", "*.*"))) 
       #used this code before 
       writer = pd.ExcelWriter("Results.xlsx", engine="xlsxwriter") 
       data.to_excel(writer, index=False, sheet_name="Results") 
       worksheet = writer.sheets["Results"] 
       writer.save()     
       self.message = "Complete" 
       self.label_text.set(self.message) 
      except: 
       self.message = "Error" 
       self.label_text.set(self.message) 
       showerror("Open Source File", "Failed to import file\n'%s'" % file) 
      return 

root=Tk() 
my_gui = Analysis(root) 
root.mainloop() 

私は何か助けていただきありがとうございます。ありがとう!

編集:私はmodeオプションがあるべきではありません

def load_file(self): 
     file = askopenfilename(filetypes=(("Excel files", "*.xlsx"), 
             ("All files", "*.*"))) 
     if file: 
      try: 
       savefile = asksaveasfilename(filetypes=(("Excel files", "*.xlsx"), 
                 ("All files", "*.*")))    
       data = pd.read_excel(file,sheetname="Sheet1") 
       data.to_excel(savefile + ".xlsx", index=False, sheet_name="Results")   
       self.message = "Complete" 
       self.label_text.set(self.message) 
      except: 
       self.message = "Error. Please try again." 
       self.label_text.set(self.message) 
       showerror("Open Source File", "Failed to import file\n'%s'" % file) 
      return 

答えて

0

動作するようにそれを得ました。これで十分です。

savefile = asksaveasfilename(filetypes=(("Excel files", "*.xlsx"), ("All files", "*.*")))

関連する問題