【Python】Excel操作 ファイルの読み込み
【はじめに】
今回は個人的にも使用機会の多いExcelの操作方法について残しておきます。
まずは、初歩としてエクセルの読み込み方法についてです。
Pythonからエクセルを操作する方法はいろいろあるようですが、今回はライブラリの「openpyxl」を使った方法になります。
PyCharm環境で実施した方法のメモです。
【openpyxl の使い方】
<ライブラリのインストール>
はじめは、「openpyxl」のライブラリインストールです。
ライブラリをインストールしないと「openpyxl」は使用できないため注意が必要です。
(Pythonファイルの作成方法はこちらを参照)
(1)PyCharmで「Alt」+「Ctrl」+「s」を押して設定画面を開く。
(2)「プロジェクト」>「プロジェクト・インタープリター」を選択。
(3)「+」を選択。
(4)「openpyxl」を検索し、インストール。
(5)下記のように成功が出れば完了です。
<ファイルの読み込み>
ファイルの読み込みとセルやシートの読み出し方法についてメモしておきます。
読み出しファイルは「テスト.xlsx」をPythonファイルと同じフォルダに保管しました。(テスト.xlsxの中身は適当です。)
まずは、今回残しておく処理の全文から。
各部分の詳細については後述してあります。
import openpyxl as xl # ファイル名の記載 fname = 'テスト.xlsx' # ブックを開く book = xl.load_workbook(fname) # シート名の取得 print('ーーシート名の取得ーー') print(book.sheetnames) print(type(book.sheetnames)) print('ーーーーーーーーーーーーーー') #共通処理 sheet1 = book.active sheet2 = book['Sheet2'] # 個別シート名の取得 print('ーーアクティブシート名の取得ーー') print(sheet1.title) print(sheet2.title) print('ーーーーーーーーーーーーーー') # 使用している最大の行・列の取得 print('ーー使用している最大の行・列の取得ーー') print(sheet1.max_row) print(sheet1.max_column) print(sheet2.max_row) print(sheet2.max_column) print('ーーーーーーーーーーーーーー') #セルの値取得 print('ーーセルの値取得ーー') print(sheet1.cell(11,7).value) print(sheet1.cell(row=4, column=2).value) print(sheet1['C1'].value) print('ーーーーーーーーーーーーーー') # シートの全セル値の取得 # 行毎に取得 print('ーー行毎に取得ーー') for row in sheet1.rows: print('ーーーーーーーーーーーーーー') for cell in row: print(cell.value) print('ーーーーーーーーーーーーーー') # 列毎に取得 print('ーー列毎に取得ーー') for column in sheet1.columns: print('ーーーーーーーーーーーーーー') for cell in column: print(cell.value) print('ーーーーーーーーーーーーーー')
<処理の詳細>
「openpyxl」のインポートとファイルの読み込み
import openpyxl as xl # ファイル名の記載 fname = 'テスト.xlsx' # ブックを開く book = xl.load_workbook(fname)
「openpyxl」を インポートすることでこのファイルで使用できるようにしています。ここでは「xl」とすることで使用する際に記述を簡単にしています。
「fname」は開くファイルの名前を記載するために準備しました。絶対パスを含めて書くことで、同じフォルダにファイルがなくても処理ができます。
「xl.load_workbook(fname)」でファイルを読み込み、そのデータを「book」に入れています。「book」にはエクセルワークブックのデータ全体が入っているイメージです。
ここでの処理はこの後の処理を行う際には必ず必要な処理です。
シート名の取得
# シート名の取得 print(book.sheetnames)
「.sheetnames」でシート名を取得することができます。
取得したシート名はリスト型になっています。
#共通処理 sheet1 = book.active sheet2 = book['Sheet2'] # 個別シート名の取得 print(sheet1.title) print(sheet2.title)
今回はエクセルブック上に「Sheet1」と「Sheet2」があり、アクティブなシートは「Sheet1」です。
「.active」で現在のシートのデータ、「['Sheet2']」の様にシート名を記載することでそのシートのデータになり、共通処理でそのデータを「sheet1」、「sheet2」に入れています。
「.title」でそのシートのシート名を取得できます。
使用セル範囲の取得
# 使用している最大の行・列の取得 print(sheet1.max_row) print(sheet1.max_column) print(sheet2.max_row) print(sheet2.max_column)
「.max_row」でシートの使用している最終行、「.max_column」で最終列を取得することができます。
セルの値の取得
#セルの値取得 print(sheet1.cell(11,7).value) print(sheet1.cell(row=4, column=2).value) print(sheet1['C1'].value)
セルの値取得は、行列を数値で指定する方法と「C1」の様に指定する方法がありました。セルを指定して、「.value」をつけることで値を取得できます。(余談ですがVBAでは指定がない場合は「.value」が補完されるのですがPythonでは補完されないため、VBAになれている方は注意が必要です。)
全セル値の取得
# シートの全セル値の取得 # 行毎に取得 for row in sheet1.rows: for cell in row: print(cell.value) # 列毎に取得 for column in sheet1.columns: for cell in column: print(cell.value)
「.row」では行毎のデータが格納されているイメージで「.column」では列毎のデータが格納されているイメージです。その中のセルのデータを順番に取得することで全セルのデータを取得しています。
【後書き】
今回は、「openpyxl」のインストールとエクセルの読み込み方法について記載しました。他にも取得な必要なデータはあると思いますので、それは必要になった際に残していきたいと思います。
【参考サイト】
今回の作業にあたり、下記サイトを参考にさせて頂きました。
www.python-izm.com
qiita.com
【Python】PyCharmのインストール
【インストール環境】
インストール時の環境は以下の通り。
- Windows 10 Home 64bit版
- PyChram 2019.2
PyCharm2019版からは64bitしか対応していないようなので注意が必要。
【インストール】
何はともあれ、まずはインストール方法から。
ここでは、PyCharmのインストールと日本語化までを実施します。
インストールするPyCharmは無料版の方です。
<PyCharmのインストール>
上記サイトから下記の赤枠を選択。
次は「Community」のDOWNLOADを選択。Windowsでない場合は左上の部分で対応したOSを選択。
インストールされた「pycharm-community-2019.2.exe」を実行し、Nextを選択。
保管先を選択して、Nextを選択。
次は、何も選択せずにNextを選択。
各チェック項目の内容はこちらに詳しく記載がありました。
Installを選択してインストール開始。
Finishを選択してPyCharmのインストールは完了。
<PyCharmの日本語化>
上記サイトから下記の赤枠を選択。
ダウンロードした「pleiades-win.zip」を解凍して下記を実行。
起動して、日本語化するアプリケーションの選択をクリック。
「pycharm64.exe」を選択する。
保管場所がわからない場合はWindowsメニューからPyCharmを選択し、「右クリック」→「ファイルの場所を開く」を選択。
ショートカットの保管場所が表示されるので、もう一度「右クリック」→「ファイルの場所を開く」を選択。
選択するのは下記のファイル。
「日本語化する」を実行。
「終了」を選択して日本語化完了。
表示されるが、このとき使用した「pleiades-win」は削除しても大丈夫。
以上でPyChramのインストールと日本語化は完了しました。
【統合開発環境について】
Pythonの統合開発環境については他にもいろいろあるようですが、私は以前にPyChramを使っていたこと、いろいろ調べてもPyCharmがよいとの情報があったため、PyCharmを選択しました。
使いやすいもの、使い慣れていくことが大事だと思っているので、なれないようであれば、新しいものを探していきたいと思います。
【参考サイト】
今回のインストールにあたり、下記のサイトを参考にさせて頂きました。
【Python】Python3.7.4のインストール
【インストール環境】
インストール時の環境は以下の通り。
- Windows 10 Home 64bit版
- Python3.7.4
インストール時の最新はPython3.7.4であった。特にこだわりがなければ最新のものをインストールすれば良さそう。
Python2.x.xとPython3.x.xは動作が違う部分があるため注意が必要なようです。
現状、Python2は必要ないため、ここではインストールしません。
【インストール方法】
<Pythonのダウンロード>
下記サイトより対象のバージョンをダウンロード。
下記の赤枠をクリックしていき、インストールファイルをダウンロード。
<インストール>
ダウンロードしたファイルを実行。
インストール先を変えたいので「Customize installaion」を選択。
次の画面では特に変更はせずに次へ。
次の画面では赤枠のインストール先を変更。
そのままでも問題ないが、階層が深いと探すのが面倒なため。
変更したらインストール開始。
以上でインストールは完了。
<PATHを通す>
PATHを通すとコマンドプロンプトで実行する際に、わざわざPythonの階層までいかなくてもコマンドの実行が可能になります。
PATHの通し方はシステム環境変数の「Path」に下記のパスを登録すればよい。(インストール先により途中は変わる可能性あり。)
<動作確認>
コマンドプロンプトを開き、「python --version」と記載して下記のようになれば問題なし。
【後書き】
今回はPythonのインストール部分を記載しました。
Pythonはブログを書く前から少しだけ勉強していましたが、今回ブログを始めるにあたり、インストールから再度行ってみました。
まだ、IDEのインストールなどがありますが、今回はここまでにします。
【参考サイト】
今回のインストールにあたり、下記のサイトを参考にさせて頂きました。
ブログ開設
【ブログの目的】
仕事を楽するためや、アプリを作成したいと思い、プログラミングの勉強を開始。
勉強内容をメモするためにブログを開設しました。
コメントなどでよりよい方法や指摘をいただけるとうれしいです。
【プロフィール】
<ブログを始めた経緯>
学生時代にプログラミングはかじっていた。
仕事を始めて事務仕事の改善ができることをしり、VBAなどを勉強し始める。
ソフト関係の部署に異動したことを契機に本格的に勉強したいと思い今に至る。
現状、プログラムのレベルは初心者レベル。
2020/08/09 追記
メモを探すのに時間がかかるので、少し記事をまとめていくことにしました。
そのため、今まであった記事も削除するかもしれません。
<好きなこと>
旅行、食べ歩き、ドライブ。
アクティブに見えるが、外に出ないときは引きこもりです。