Tkinterで1度に複数のCSVを選択して読み取る方法 (おまけpart1)
■はじめに
これまでpart1~part3で、tkinterを用いてCSVファイル内の数値データを抽出し、新規Excelファイルとして保存する一連の流れを紹介しました。
part1 tkinterを使って任意のCSVファイルを指定する方法
part2 指定したCSVファイルから数値情報を抜き出す方法
part3 CSVから抜き出した情報をExcelファイルに保存する方法
今回から上記part1~3で作ったコードを改良していきたいと思います。
まず、前回までのコードだと1度に選べるCSVファイルが1つのため、複数のCSVファイルを処理したい場合に何度もクリックする必要があり非常に面倒です。
そこで複数のCSVファイルを一度に処理できるようにしたいと思います。
■コード
コードを実行すると次の画面がでてきます。
右側の開くボタンを押すと選択画面がでてきます。
またCtrlを押しながらクリックするとCSVファイルを複数選ぶことができます。
今回はdata01~data03の順番に選択しました。
開くを押すと次のように確認画面が表示されます。
すると新しいExcelファイルがデスクトップに作成されます。
ファイル名は作成日になっています。
Excelファイルを開くと次のように、新しいシート「計算結果1~3」が作成され、計算結果1のシートにはdata01.csvが、計算結果2のシートにはdata02.csvが、計算結果3のシートにはdata03.csvのデータが格納されています。
以上より、複数のCSVからデータを抽出して、Excelファイルにまとめることができました。
■説明
基本は冒頭で紹介した記事のpart1~part3と同じなため、変更点のみ記載します。
まず複数のCSVを一度に選択したい場合はaskopenfilenamesを使います。
この時、変数pathには次のようにリスト形式でCSVのパスが格納されます。
すなわちリスト1番目であるpath[0]にはdata01.csvのパスが、リスト2番目のpath[1]にはdata02.csvのパスが、リスト3番目のpath[2]にはdata03.csvのパスが格納されていることになります。
そこで次のようにfor文を使ってリストに格納されているpathを1つ1つ参照していきます。loadtxtの使い方は冒頭で紹介した記事のpart1で説明しているため省略します。
次にExcel内に新しいシートを作成する方法を紹介します。
新しいシートはwb.create_sheet("シートのタイトル名")で作成できます。
またws=wb["シートのタイトル名"]でどのシートをアクティブにするか(どのシートにCSVのデータを書き込むか)を指定できます。
今回、とりあえずシート名は後で書き直すので、仮としてwb.create_sheet("計算結果")として新しいシートを作成しています。
そしてすぐ次の行でws=wb["計算結果"]とし、作ったシートを選択(アクティブに)します。最後にws.title=sheet_title[i]で選択したシートの名前を希望の名前に変更しています。なお、あらかじめ設定したい名前を格納したsheet_titleというリストを最初の1文で作っています。
最後に処理が完了したことを確認するため、アラートが出るように設定しています。
■コーヒーブレイク:買ってよかったものを紹介
新しい試みとして、私がこれまで買った物の中ですごく良かったものを紹介してみようと思います。今日紹介するのは私が長年愛用しているEIZOのディスプレイです。
このディスプレイを初めて使用した時は非常に感動しました。
私は目が疲れやすくまた目が疲れるとなぜか肩が凝るため、プログラムを書いている時は体調を崩しがちでした。しかしこのディスプレイは個人的には紙を見ているような感覚で全然目が疲れません。21.5インチもありますが23.8インチの方が広々と画面を使えるためおすすめです。
ただし音質はあまりよくありません。聞ければ良いという人なら気にならないと思いますが、音楽等聴きたいのであれば別途スピーカーを購入するのが良いと思います。
私はコスパで以下2つのスピーカーを使用しています。
JBLのスピーカーはEWAの2倍ほど値段が高いですが音は約5000円とは思えないくらい良いです。ただEWAも音は悪くなく安い・小さく持ち運びしやすい等のメリットがありどちらもおすすめです。
■最後に
これで一度に複数のCSVを選択してExcelファイルにまとめることができました。ただExcelシートの作成や選択の部分はごり押しなので、時間があるときにもっとスマートな方法を考えてみたいと思います。