Python3でExcelのxlsx形式のファイルを読み込みたかったので調べたところ、openpyxl、Pandas、xlrdなどのライブラリを使う方法がある。その中でopenpyxlを使ってみたので、xlsxファイルを読み込んでセル値を出力するまでの方法をまとめておく。ちなみに、xls形式のファイルは読み込めない。
Python3系の場合Python3.3以上が必要。How to install openpyxl-2.2.1 for Python3 on Ubuntu-12.04?によると、Python3.2でもインストールする方法があるようだが、Python3.3以上が無難らしい。今回はPython3.4の環境でインストール。インストールのコマンドは以下の通り。
国立国会図書館のWEBサイトにある、博士論文リスト(インターネット公開)を使う。これは、国会図書館がデジタル化した博士論文の基本的な書誌項目のリストをxlsxファイルにしたもの。ダウンロードするときのファイル名はdataset_201607_h_internet.xlsx。
xlsxファイルを読み込んで、1シート目の内容を出力してみる。
実行すると以下のような結果が出力される。
xlsxファイルのセルに計算式が入っている場合、openpyxlはデフォルトで計算式を取得する。計算した値を取り出したいときは、load_workbookのオプションでdata_only=Trueを指定してxlsxファイルを読み込む。
openpyxlのインストール
Python3系の場合Python3.3以上が必要。How to install openpyxl-2.2.1 for Python3 on Ubuntu-12.04?によると、Python3.2でもインストールする方法があるようだが、Python3.3以上が無難らしい。今回はPython3.4の環境でインストール。インストールのコマンドは以下の通り。
xlsxファイル
国立国会図書館のWEBサイトにある、博士論文リスト(インターネット公開)を使う。これは、国会図書館がデジタル化した博士論文の基本的な書誌項目のリストをxlsxファイルにしたもの。ダウンロードするときのファイル名はdataset_201607_h_internet.xlsx。
Python3でのコーディング
xlsxファイルを読み込んで、1シート目の内容を出力してみる。
# ライブラリのインポート from openpyxl import load_workbook # xlsxファイルの読み込み wb = load_workbook( filename = "dataset_201607_h_internet.xlsx" ) # 1つ目のシートの読み込み ws = wb.worksheets[0] # A2セルの内容を出力 print( ws["a2"].value ) print( "=================================" ) # 1行目のみ出力 for col in ws.columns: print( col[0].value ) print( "=================================" ) # 学位授与が東京大学のタイトルを出力 for row in ws.rows: if row[3].value == "東京大学" : print( row[1].value )
実行結果
実行すると以下のような結果が出力される。
おまけ
xlsxファイルのセルに計算式が入っている場合、openpyxlはデフォルトで計算式を取得する。計算した値を取り出したいときは、load_workbookのオプションでdata_only=Trueを指定してxlsxファイルを読み込む。
# data_only=Trueを指定すると、セルに計算式が入っている場合に計算値を取得できる wb = load_workbook( filename = "dataset_201607_h_internet.xlsx", data_only=True )
0 件のコメント:
コメントを投稿