Pythonを使ってエクセルを扱うことができます。
ライブラリーがいくつかありまして。
エクセルのデータを読み込んでいろいろやりたい場合は「Pandas」(パンダス)ってのが便利です。
Pandasのデータフレームって型に読み込んでしまうと、大抵のデータ処理ははあっさりとできてしまいます。
Pandasでもエクセルファイルの読み込みやエクセルへの書き込みはできるのですが、書式とかは変えられません(多分)
エクセルの書式変えたり色々したい場合は「openpyxl」(なんて読むんだこれ?オープンパイソンエクセル?)がオススメです。
今日、最初に調べたのは列の幅の設定。
これはあっさりと実現できました。
sheet.column_dimensions['B'].width = 50
よっしゃ!( •̀ᴗ•́ )
勢いに乗って次は、列の文字揃えを中央揃えにしようとしました。
エクセルでやる場合、列を掴んで中央揃えボタンを押せば終わり。
openpyxlでもそれくらい楽にできると思ったのです。
ところが。
当てずっぽうで書いてみてもエラーが出る。
例によってググります。
しかし一向にやり方が出てこない!
出てくるのはセルを中央揃えにする方法ばかり。
「ちゃうねん!列ごと一気にやりたいの!みんなやりたいでしょ!?」
埒が明かないので英語で検索してみます。
文字揃えはAlignmentってのを使うってことがわかったので
「openpyxl alignment column」
で検索すると一発目に答え出てきた!
Styling a Range or even a whole column is not implemented. You have to do it on your own.
python - How to do column alignment in openpyxl? - Stack Overflow より引用
「列ごとスタイル変えるのは実装されてないねん。自分でやるしか無いで」(関西弁で意訳)
できねーのかよ!!( ;∀;)早く言ってよ!!
Pythonって思ったよりずっと簡単にいろんなことができるから、エクセルで簡単にできることは当然簡単にできると思いこんでおりましたよ。( ;∀;)
じゃあどうすればいいのか?
これは繰り返し処理を使ってセルごとに設定するしかないのです。
めんどくさっ!!(="=)
ただopenpyxlの繰り返し処理は簡単でして。
行ごとの処理の下に、セルごとの繰り返し処理を入れてやればシートを網羅できます。
こんな感じ
ちなみにフォントも同じ感じで設定します。
「くっそー、沼にハマったわ( ;∀;)」
と落ち込んでた時にタイムラインに流れてきたツイート
プログラミングに躓いてググろうとしている時は壁にぶつかっている時と同じ。壁だから乗り越えるのは大変だけど、乗り越えたら成長も大きいってこと。絶対に辞めない、ググり続ける、そして駄目だったら人に聞こう!成長が待っているのに乗り越えないなんてもったいない!
— ゆうき@エンジニアとIT論文マニア (@yuki_engineer) 2020年7月31日
元気もらいました^^。
てなわけでこれからもググり続けます!!