pytohnプログラミング学習で勉強したことをまとめました
備忘録といった感じで、初心者向けに書いてあります
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
1、エクセルを扱う為のライブラリ
エクセルを操作出来るライブラリはいくつかありますが
今回はOpenPyXLを使用します
インストールされていなければ「pip install」等でインストールしましょう
2、ライブラリのインポート
>>> import openpyxl
3、ファイルの呼び出し
ワークブック全体を変数「wb」に代入
>>> wb=openpyxl.load_workbook(‘エクセル名.xlsx’)
変数wbの中に「エクセル名.xlsx」のbook全体が代入された
※エクセル名は拡張子付きで書く事!
4、ワークブック内のシートネームを変数「 sheet_name 」に代入
>>> sheet_name=wb.get_sheet_names()
シートが複数ある場合は左から0番目、1番目、2番目・・・となる
sheet_name [0] は左から1個目(0番目)のシート
sheet_name [2] は左から3個目(2番目)のシートになる
少しややこしいが、慣れれば気にならなくなるので大丈夫
5、シートネームを選択して「Sheet」変数にシートのデータを代入
>>> sheet=openpyxl.get_by_sheet_name(sheet_name[0])
上記の場合、左から1個目(0番目)のシートのデータを 変数「Sheet」に代入
6、セルの操作
・セルのデータの取得
上記のセル[A1]のデータ「123」を変数「x」に代入します
>>> x=sheet[’A1’]
xに[A1]が代入されました
アルファベットと数字での指定以外に行列(数字のみ)で指定する方法もあります
>>>x=sheet.cell(row=1,column=1)
[A1]の1にあたるのがrow=1(行)、Aにあたるのがcolumn=1(列)
このようにセルの番地は2種類の方法でアクセス出来ます
用途と好みで使用してください
・セルにデータを挿入
上記ではセルからデータを取得しましたが、次はセルの中にデータを挿入していきます
やり方としては、セルからデータを取得したときの逆の動きをしていきたいと思います
>>> sheet[’A1’] =123
[A1]セルに整数123が入ります
もちろんこれもrowとcolumn(行列)のやり方でも出来ます
>>> sheet.cell(row=1,column=1).value=123
7、エクセルデータのセーブ
セルのデータを書き換える事が出来たのでエクセルデータをセーブして更新したいと思います。
今回 「エクセル名.xlsx」 というエクセルデータを使用しました
この 「エクセル名.xlsx」 の内容を更新(上書き)したい場合は
>>>wb.save(‘ エクセル名 .xlsx’)
これで更新(上書き)されます
更新(上書き)では無く、今使用したエクセルデータはそのままで
新しくエクセルファイルを作りたい場合(名前を付けて保存)
>>>wb.save(‘ new .xlsx’)
‘ エクセル名 .xlsx’ ⇒ ‘ new .xlsx’
単純に新しい名前を付ければOKです
本当に基本的な事だけを書きました
しかしここまで理解していれば、簡単な業務効率化のプログラミングなども出来ると思います。
あとは応用、データを取り出して加工して入れ込んで・・・
8、ちょっと困った計算式が入ったセル
ここで困った事が起きました
[A2]のセル内を見て下さい
表示されている計算結果は「2」
しかしセルに入っている計算式は「=A1+B1」という計算式になっています
そのままセルのデータを取得すると
「=A1+B1」 が取得されてしまいます
計算結果の「2」を取得するには計算させてから取得させます
>>>wb=openpyxl.load_workbook( ‘エクセル名.xlsx’ ,data_only=True)
data_only=True (データだけ取りたいよ)
これでファイルを開くことにより、セルのデータ取得は、計算結果が取得される
※注意 data_only=True で開いたエクセルを更新(上書き)すると、計算式が全部無くなってしまう
全て計算結果で更新されてしまうので気を付けましょう
学習が進んだら追記していこうと思います
間違いなどがあればご指摘頂けると助かります