Excel→csvがやたら面倒だったけど、SNS見てエヴァのネタバレに遭遇するよりはマシなのでやり込んだ【Python勉強中】


このエントリーをはてなブックマークに追加

ここからちょっと広告です。

広告は以上です。

エヴァのネタバレを防ぐためにも、SNSなぞ見ずにいつものようにPythonの勉強、というか、なかなか終わらない例の簡単なはずの教科書『退屈なことはPythonにやらせよう』をやっています。

でも、今回は頭がこんがらがった。やけに難しかった。

お題は簡単で、「エクセルファイルを、シートごとに、csvファイルに変換する」なのだけど、手順がやたら面倒くさい。
まず、以下をやります。これはまあ普通。

1. ディレクトリからエクセルファイルだけ抜き出す
2. エクセルファイルからシートを取り出す

で、本当はここで「シートのデータをcsvに変換!」ってやってしまいたいのだけど、それができない。
代わりに、こうやります。

3. シート内の行ごとに、リストを作る
4. 3で作ったリストを1行としてcsvに書き込む

これを行の数だけやる。

実際に書いてみると、頭がスパゲッティみたいにこんがらがりました。
エクセルファイルとcsvファイルを同時に開いている状態で、片方からデータを抜き出し、いったんリストを作って、書き込む。
forループが入れ子になって、どの命令をどの段落に書いたらいいかわからなくなる。

「ウキーッ! でもエヴァのネタバレに遭遇するよりマシ!」と思いながら、なんとか頭を整理して、なんとかできました。
その努力の結晶がこれ。

excelシートをcsvに変換:GitHub Gist
Fromxlstocsv20210308

あと、このコードを動かすためのサンプルデータが、なんかマニアックなところにあったのと、複数シートを持つエクセルファイルがサンプルになかったっぽいので、がっちゃんこして、テスト用データを作りました。以下からダウンロードしてください。

Sampleexcelsをダウンロード

なんか最近、薄々気づいてきたのですが、もしかしたら、この地球上に、僕と同じ教科書を僕と同じところまでやっている人は、ほぼゼロなのかもしれません……
もしいたら、その方のために情報提供をいたします。役に立ちますように……

Ads by Google

コメント

コメントは、Twitterやはてブに、以下のボタンから本記事のアドレスつきでツイート/ブクマしていただくと、上にあるzenbackのウィジェットに反映されます。
  このエントリーをはてなブックマークに追加
または同ウィジェット内のFacebookコメントでお願いしますー。

Facebookのシェアは……されても誰だかわからないのですが、シェア自体は嬉しいので、下にボタンを置かせていただきます。よろしくお願いします。