当初、辞書型データを CSVファイルに出力する機能を作成したのですが、Excelファイルへ 切り替えられないかなぁ と改善を考えています。
以下のコードでは元のコードを、
・保存用ファイルファイアログで現れる拡張子を、csv⇒xlsxに
・保存されるファイル名の初期値の拡張子を、xlsxに変更
としただけの対応です。
このコードを実行すると一応にファイルが仕上がるのですが
当該ファイルを開こうとすると「ファイル破損」を疑うメッセージが現れてしまいます。 どういう対策を施せばよろしいでしょうか?
簡易に対応できる、Excel版の csv.DictWriter みたいなものは ないだろうか?という主旨の質問です。
よろしくお願いします。
Python
1def csv_Out(self, event=None): 2 if (self.btn3['state'] != 'normal'): 3 return 4 5 ######ftypes=[('data files','*.csv;*.txt')] 6 ftypes=[("excel", "*.xlsx")] 7 8 if self.txt2.get() != "": 9 ####ini_fname = self.txt2.get() + "_" + dt_now.strftime('%Y%m%d%H%M%S') + ".csv" 10 ini_fname = self.txt2.get() + "_" + dt_now.strftime('%Y%m%d%H%M%S') + ".xlsx" 11 else: 12 ####ini_fname = dt_now.strftime('%Y%m%d%H%M%S') + ".csv" 13 ini_fname = dt_now.strftime('%Y%m%d%H%M%S') + ".xlsx" 14 fname = tkfd.asksaveasfilename(filetypes=ftypes, 15 initialfile=ini_fname) 16 17 if fname: 18 header = list(output_data[0].keys()) # 列の順番を規定 19 20 with open(fname, "w", newline="") as f: 21 writer = csv.DictWriter(f, fieldnames=header, quoting=csv.QUOTE_NONNUMERIC) 22 writer.writeheader() # ヘッダーを書き込む 23 writer.writerows(output_data) # データを書き込む 24 25 tkmb.showinfo("Result","Finished converting !", parent=self.this) 26 self.dialog.grab_set() 27 else: 28 return
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/06 00:03