Python DAY3-2:Excelデータ取得サンプルコード解読
Windowsにインストール
Windows10にインストールしてみた!
公式リファにもあった通り、
そもそもインストールしなくても使用できるそうですが無視。
ほんでインストールするにしても、
pyenv無くてよい、のだから時短しようぜ!!
インストールも、
コマンドラインじゃなくて
インストーラーDLで秒じゃん、秒!!
まあすべては結果論さ。
pyenvとにらめっこできたおかげで
こうして学習意欲の火が再燃したのだから。
たかが、
時間が1/6になっただけよ。。。泣
サンプルファイルDL
早速見せつけられたサンプルコード
Excel形式の伝票からデータを一覧形式で取得しcsvファイルに書き起こすというシナリオ
まぁ解説なくともある程度読むことはできたよね
VBAやってるから似てるところはすっと入ってくるか
やはりPythonのほうが扱いやすい印象ではあるなーっ
読めてもかけなきゃ意味ないやい!!
# ライブラリをインポート # ここでは3種のライブラリを使用 import pathlib #標準ライブラリで、pathをオブジェクト化できる優れもの import openpyxl #外部ライブラリ Excelを扱うライブラリは複数あるがより機能豊富なものらしい import csv #csvにはきだすための標準ライブラリ
はい続きまして、処理についてのメモ
# pathオブジェクト作成 path = pathlib.Path("フォルダパス") # 新しいファイルwbオブジェクトを作成 wb = openpyxl.Workbook() # shオブジェクトの取得方法 sh = wb.active # for文にてpath(フォルダ)オブジェクトのTIPS for path_obj in path.iterdir(): # iterdir()メソッドでpathオブジェクト配下のパスを順番に取り出せる # ファイルパスを拡張子フィルタ検索 if path_obj.match("*.xlsx"): # ファイルパスを指定してオブジェクトwbに読み込む wb = openpyxl.load_workbook(パスオブジェクト) # wbオブジェクトの全てのshに対するfor文がVBAより簡単 for sh in wb: # 「セルの値がなければ」は、 # VBA: sh.Cells(1, 1).Value = "" 等で表す # Pythonでは、 sh.cell(1, 1).value != None # csvに書き出すところが少し慣れが必要かも with open("書き出すパス", "w", encoding="utf_8_sig") as fp: # "w": 書き込み、"utf_8_sig":BOM付きUTF-8 # withから始めると、終了後自動で閉じてくれる # fp は「ファイルポインタ」 csv.writerで書き込めるもの(?) writer = csv.writer(fp, lineterminator="\n") # 行終わりを改行コードを指定してファイルポインタ書込かな # ここでまたもや優れた書き方 for row in sh.rows: # 全行に対して繰り返し # 1行ずつ書き込む記述をリスト内包表記とやらで記述 writer.writerow([col.value for col in row]) # 多分、「1行のうちの列数分の要素をもつリストで、要素はその列の値」という意味なんだろう…
さすがに転記部分はVBAとほぼ同じなので無視
Cellsがcellなだけですたい
最後は少し難読だなー…
慣れだな、うん慣れ!
明日は外部ライブラリをインストールしてみようの巻!