excelファイルをpythonで自由自在に操るためのTIPS
現在、システム開発業界で、非常に人気が高まっているプログラミング言語が「python」です。pythonは「コードの可読性が高い」「コード量を少なくできる」という素晴らしい特徴を持っています。特に、人工知能(AI)の開発に用いられることが多く、今話題のプログラミング言語です。今回は、pythonを使いexcelファイルを操るためのテクニックをご紹介していきます。
ライブラリ「openpyxl」の利用
excelファイルを読み書きする際に、一からプログラムを記述するのは現実的でありません。pythonでexcelファイルを扱う際にはライブラリを利用しましょう。excelファイルを読み書きできるライブラリは複数あります。今回は一般的に利用されることが多い、「openpyxl」を紹介します。excelファイルの読み書きだけでなく、書式の変更もできるので便利です。openpyxlをインストールするためには、コマンドプロンプトで以下のコマンドを実行します。
pip install openpyxl
これで、openpyxlを利用し、excelファイルを操作するための準備が整います。
ライブラリを使うためにはインポートが必要
まずはライブラリをインポートします。「このライブラリを使います」という宣言のようなものだと捉えてください。
import ライブラリ名
「openpyxl」を使う場合には、以下のようになります。
import openpyxl
また、ライブラリには別名を付けられます。
import ライブラリ名 as 別名
ライブラリ名が長い場合や分かりにくい場合、特に便利です。
excelファイルの読み書き
まずはexcelファイルを読み込みましょう。
workbook = openpyxl.load_workbook(‘ファイル名’)
excelファイルを読み込み、ワークブックのオブジェクトとして取得します。excelファイルをpythonの作業ディレクトリに置くと、ファイル名だけで取得できます。もし作業ディレクトリにexcelファイルがない場合には、フルパスでファイル名を指定しましょう。
新たにexcelファイルを作成する場合には、ワークブックのオブジェクトを新規作成します。
workbook = openpyxl.Workbook()
ワークブックのオブジェクトを取得することで、内容を操作することが可能になります。プログラムで内容を変更した後は、excelファイルの保存を行いましょう。
workbook.save(‘ファイル名’)
内容を変更したワークブックは、保存しないとexcelファイルに反映されません。
読み込むシートを指定する
excelファイルには複数のシートがあります。どのシートのデータを操作するのかを記述しなければなりません。シート名からシートを選択しましょう。
sheet = workbook.get_sheet_by_name(‘シート名’)
これで「sheet」オブジェクトにシートのデータを取得できます。シート名が分からない場合には、シート名を取得することもできます。
workbook.get_sheet_names()
また、新たにシートを作成することもできます。
sheet = workbook.create_sheet()
シートのオブジェクトを取得することで、データの内容を読み書きする準備が整います。
セルの値を取り扱う
セルの値を取得してみましょう。
data = sheet[‘A1’].value
‘A1’はセルの位置を表します。「data」に任意の位置のデータを取得しました。’A1’のデータは以下のように取得することもできます。
data = sheet.cell(row=1, column=1).value
‘row’は行の番号、’column’は列の番号を表します。データを取得する際に、番号が0ではなく1から始まることに注意してください。
セルの値を書き込むためには代入を行います。
sheet[‘A1’].value = ‘Hello World’
これで’A1’に’Hello World’という文字列が書き込まれます。
excelファイルを自由自在に操る
openpyxlを利用し、excelファイルの操作を行いましょう。一例として、excelファイルのデータを2次元配列化するコードをご紹介します。
list = [[0 for i in range(sheet.max_column)] for j in range(sheet.max_row)]
for x in range(0, sheet.max_row):
for y in range(0, sheet.max_column):
list[x][y] = sheet.cell(row=x+1, column=y+1).value
1行目では2次元配列を’list’として作成しています。excelシートの最大列数が’sheet.max_column’、最大行数が’sheet.max_row’です。リスト内方表記を利用して、excelシートの全データを格納できる2次元配列を用意します。この時点では’list’にデータは入っていません。
続いて、2行目で行数の数、3行目で列数の数だけfor文を回しています。for文を2重にすることにより、行×列の回数分、命令を実行できます。最後の4行目でexcelシートのセルの値を、’list’に代入しています。「openpyxl」では行列の番号が1から始まることに注意してください。
配列の場所を表す値は0から始まるため、セルの値を取得する際に+1しています。以上のコードでexcelシート全てのデータを、2次元配列’list’として取得できます。
pythonでexcelファイルを扱うメリット
プログラムでexcelファイルを扱えれば、様々なメリットがあります。データから統計、分析、グラフ化などを行えます。また、pythonはAI(人工知能)やデータサイエンスのライブラリが豊富です。excelに搭載されているVBAに比べて、より高度なプログラムを組むことが可能となります。さらに2017年末、「Microsoftがexcelにpythonの搭載を検討中である」というニュースがありました。近い将来、pythonでexcelファイルを扱うことがメジャーになるかもしれません。
▼キャパの公式Twitter・FacebookではITに関する情報を随時更新しています!