1. TOP
  2. ブログ
  3. excelファイルをpythonで自由自在に操るためのTIPS

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に関する情報を随時更新しています!

 

建設・土木業界向け 5分でわかるCAD・BIM・CIMの ホワイトペーパー配布中!

CAD・BIM・CIMの
❶データ活用方法
❷主要ソフトウェア
❸カスタマイズ
❹プログラミング
についてまとめたホワイトペーパーを配布中

デジタルツインと i-Constructionについての ホワイトペーパー配布中!

❶デジタルツインの定義
❷デジタルツインが建設業界にもたらすもの
❸i-Constructionの概要
❹i-Constructionのトップランナー施策

CONTACT

株式会社キャパでは、GeneXusの開発・改善について ご相談を承っています。

営業時間:月~金 9:30~18:00 
定休日:土日・祝

 

    カテゴリ一覧

    PAGE TOP