kakashi-blog・カカシブログ・

Python備忘録を書きドローンやバイクなど好きな事で生きて行こうとしているブログ

python プログラミング

Pythonプログラミング備忘録 ―エクセル操作編

投稿日:2019年11月16日 更新日:

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 で開いたエクセルを更新(上書き)すると、計算式が全部無くなってしまう

全て計算結果で更新されてしまうので気を付けましょう

 

 

学習が進んだら追記していこうと思います

間違いなどがあればご指摘頂けると助かります

-python, プログラミング
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Python備忘録 selenium 自動ログイン編

前回はブラウザのスクロールまで行いました 今回はブラウザのログイン画面から自動ログインに挑戦   退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング   ◇ソー …

pythonで画像処理 Pillow(PIL)

画像処理なんて大げさですが、Pillow(PIL)を使用して少し画像の操作をやりました   ライブラリのインポート~ from PIL import Image im=Image.open(‘C:\\ …

Python備忘録 selenium ブラウザスクロール編

ウェブブラウザをpythonで操作をしてみたい seleniumというライブラリでブラウザを操縦できる   退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング …

Tkinterのメッセージボックス、謎ウインドウが消えない

pythonでTkinterを使用し、メッセージボックスを使おうと思ったが、謎ウインドウが出てきて処理が止まってしまう。    ↓のやつですね   調べてみると、「ルートウィンドウが無いと勝手に生成さ …

Amazonはスクレイピングが禁止。seleniumでデータ収集をしてみた

pythonでコードを書いて、AmazonのサイトからASINコードと金額のデータを、普通にスクレイピングしてみたけど出来なかった。(バグだと思って何時間も無駄にした) どうやらAmazonのサイトは …