この記事ではPythonでExcelのファイルを操作する方法について解説をしたいと思います。
xlrdというパッケージを使えば簡単にExcelのブックやシートを操作することが出来ます。
PythonでExcelファイルを操作したい。
CSVファイルに変換せずに扱いたい。
今回の記事ではこのように思っている方に向けて、
【基礎】ExcelファイルとCSVファイル
【基礎】xlrdとは
【実践】Excelファイルを読み込む方法
について解説をしていきます。
PythonでExcelファイルを扱ってみましょう!
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
ExcelファイルとCSVファイル
Excelファイルとよく比べられるファイル形式にCSVファイルがあります。
CSVファイルはComma-Separated Valuesの略で、カンマで区切られた値が入ったファイルになります。
このCSVファイルを扱いやすいようにセルを装飾したりシートなどの概念を追加したものがExcelファイルになります。
またExcelファイルにも2種類あり、Excel2003まで使われていた.xls形式と、Excel2007から現在も使われている.xlsx形式があります。
大きな特徴としては扱える行と列の数が多くなったことくらいなので、あまり気にする必要はありません。
ただし、.xlsx形式は2003以前のExcelで開くことが出来ないので気をつけましょう。
xlrdとは
PythonでExcelのファイルを扱うためにはxlrdというパッケージを使う必要があります。
xlrdではExcelのファイルを直接、そのまま読み込むことが出来ます。
CSVファイルであれば標準パッケージのcsvを使えばよいのですが、xlrdはpipを使ってインストールする必要があります。
こちらのコマンドを使ってインストールしておきましょう。
pip install xlrd
また、CSVファイルを扱う方法についてはこちらのコードをご覧ください。
ちなみにExcelファイルを読み込むことができるxlrdの他にも、Excelファイルに書き込むことができるxlwtというパッケージもあります。
Excelファイルを読み込む方法
それでは早速Excelファイルを読み込んでみましょう。
ちなみにこれからは、このようなExcelのファイルをサンプルに読み込んでみます。
Excelのブックをオープンする
まずはExcelのブックをオープンしましょう。
ExcelではExcelファイルのことをブックと呼び、さらにそのブックに分かれて入っているデータをシートと呼びます。
こちらのコードをご覧ください。
import xlrd book = xlrd.open_workbook('test_xlrd.xlsx')
まずはxlrdパッケージをimportしましょう。
次に、open_workbook関数の引数にExcelファイルのパスを渡してファイルをオープンします。
ちなみにxlrdは.xlsファイルも、.xlsxファイルも扱うことが出来ます。
シートの情報を取得する
次にシートの情報を取得してみましょう。
こちらのコードをご覧ください。
import xlrd book = xlrd.open_workbook('test_xlrd.xlsx') # シートの数 print("Sheet num: ", end='') print(book.nsheets) # すべてのシートの名前 for sname in book.sheet_names(): print("Sheet name: ", end='') print(sname) # 指定したシートの名前 print("index: " + book.sheet_by_index(0).name) # インデックス(0〜)で指定 print("name: " + book.sheet_by_name('sheet2').name) # 名前で指定
実行結果
Sheet num: 3 Sheet name: sheet1 Sheet name: sheet2 Sheet name: sheet3 index: sheet1 name: sheet2
ここではシートの数と名前を取得しています。
名前はインデックスと名前で取得するものを指定することが出来ます。
CSVファイルにはシートという概念が無くファイルが増えがちですが、Excelファイルで読み込むことでファイルも扱いやすくなりますね。
セルの情報を取得する
それでは次にセルの情報を取得してみましょう。
こちらのコードをご覧ください。
import xlrd book = xlrd.open_workbook('test_xlrd.xlsx') s1 = book.sheet_by_index(0) # 行と列を取得 print("sheet1 cols: " + str(s1.ncols)) print("sheet1 rows: " + str(s1.nrows)) # sheet1のB3を取得 print("sheet1,B3: ",s1.cell(2,1).value)
実行結果
sheet1 cols: 3 sheet1 rows: 5 sheet1,B3: B3
このコードでは行と列の大きさと特定のセルの値を取得しています。
特定のセルの値を取得するためには、cell関数にそのセルの位置を渡します。
まとめ
この記事ではPythonでExcelファイルを扱う方法について解説をしてきました。
Excelファイルの読み込みの方法については分かっていただけたでしょうか?
基本的にはCSVを使うほうが一般的ですがxlrdでExcelファイルを直接読み込む方法を知っておいても損はありません。
もしExcelファイルを扱う方法について忘れてしまった場合は、またぜひこの記事をご覧ください!