PythonでExcelファイルを扱うライブラリの比較

PythonにはExcelファイル(.xls, .xlsx)を読み書き(入出力)するためのライブラリがいくつかあります。読み込みか書き込みか読み書き両方か、.xlsと.xlsxのどちらに対応しているかなどの違いがあります。 以下の内容について説明します。

Excelファイルの拡張子xlsとxlsxの違い Excelファイルを読み書きするPythonライブラリの違いと使い分け Excelファイルのデータをもとに分析するならpandas Excelファイルの書式を保ったまま編集・追記するならopenpyxl xlsファイルを扱う必要があるならxlrd, xlwt

Excelファイルの拡張子xlsとxlsxの違い

Excelファイルにはバージョンによって拡張子が.xlsのものと.xlsxのものが存在します。

.xls: Excel97-2003のExcelファイル .xlsx: Excel2007以降のExcelファイル

2007以降のExcelであれば.xlsも.xlsxも両方開けるが、2003以前のExcelでは.xlsxは開けない。 なお、.xlsmはマクロが保存されている以外は.xlsxと同じ。

Excelファイルを読み書きするPythonライブラリの違いと使い分け

Excelファイルを読み書きするPythonライブラリは多数存在するが、ここでは有名どころを紹介します。読み込みか書き込みか読み書き両方か、.xlsと.xlsxのどちらに対応しているかなどの違いがあります。 簡単に違いをまとめると以下の通り。

xlrd xls, xlsxファイルの読み込み xlwt xlsファイルの書き込み(作成・保存) openpyxl xlsxファイルの読み込み・書き込み(作成・保存) 読み書きができるので既存のファイルに追記する場合に便利 pandas xls, xlsxファイルの読み込み・書き込み(作成・保存) 上記のライブラリを内部で使っている独断と偏見による使い分けは以下の通り。詳しい使い方などはそれぞれの関連記事を参照。

Excelファイルのデータをもとに分析するならpandas

数値や文字列のデータを読み込んで分析するのであればpandasがおすすめ。

pandas.DataFrameとして読み込んでしまえば、pandasのデータ分析のための豊富な関数やメソッドが活用できます。グラフ作成(可視化)なども便利です。

ただし、データをpandas.DataFrameとして読み込むため、書式(セルやテキストの色)や罫線などの情報は扱えない。

Excelファイルの書式を保ったまま編集・追記するならopenpyxl

既存のExcelファイルの書式を保ったまま編集・追記(セルの値の変更、新たなセルの追加など)をしたい場合はopenpyxlがおすすめ。すべてをサポートしているわけではないが、基本的なセルの塗りつぶしやテキストの色、数式、罫線などはそのまま保持されます。書式の変更もできます。

##xlsファイルを扱う必要があるならxlrd, xlwt openpyxlは.xlsファイルをサポートしていません。pandasは内部でxlrd, xlwtを使っているため.xlsファイルも扱えるが、pandasを使うまでもない場合、例えば「複数の.xlsファイルの同じ位置のセルの値を読みたい」というような場合にはxlrd, xlwtを使います。

Last Updated: 6/26/2019, 10:34:03 PM