【備忘録】PythonでExcel操作するには?(Openpyxl編)

Python

皆さん、こんにちは!
上越市を拠点にし、「FA設備・装置開発」と「画像処理」に強い会社、NSIです!
私達は豊富な経験と専門知識で、各種業界の自動化・システム化のお手伝いをしています。

今回はPythonでExcelを操作してみました。
PythonでExcel操作したい! という方にこの記事が役に立てれば嬉しいです。

PythonでExcel操作できるメリットとは?

PythonからExcel操作できるメリットとして、Excelにない機能を実装できる というのが挙げられます。

ここで私の実体験を例に挙げてみましょう。
先日、あるデータを集計しており、XYの座標値を以下のようにオートフィルで表示しようとしたのですが…

なんと 全然うまくいかない…!
[1,1]から[1,10]まではオートフィルで一気に表示できたのですが、[2,1]に繰り上げることができない…
データ数が少なければ先頭の数値を書き替えてオートフィルすることもできますが、[100,100]まであったとしたら、気が遠くなるような作業です。
もちろん、Excelの関数を駆使すれば表示できるとは思うのですが、座標を表示させるのにそこまで労力はかけたくありません。

ということで、サクッと自動化しちゃいましょう。

OpenpyxlでExcel操作してみる

今回はOpenpyxlを使用して、座標値のコピーを自動化してみます。
ここからはPythonがインストールされていることを前提に説明していきます。

1. Openpyxlをインストールする

コマンドプロンプトを起動し、以下のコマンドを実行します。
※ 以下はPythonがインストールされている場合のコマンドです。別の開発環境(Anaconda)等を使っている場合は、それに合わせて変更してください。

pip install openpyxl

補足:Anacondaとは?
簡単に言うと、Pythonでの開発に必要な「ライブラリ」や「ツール」などをセットにした実行環境。
Pythonでは、必要なライブラリを「pip install ~」で1つずつインストールする必要があるが、Anacondaはインストール時にある程度のライブラリも含まれているため、わざわざインストールする手間がないのがメリット。
多様な機能が含まれている分、Pythonよりも容量を必要とするのがデメリット。

2. 処理を作成する

今回は以下のような処理を作成しました。各処理について簡単に解説していきます。

import openpyxl

# XY座標の範囲を入力
Xrange = input('Xの範囲は?:')
Yrange = input('Yの範囲は?:')

# Excelファイルの生成
wb = openpyxl.Workbook()

# 先頭のシートを取得
ws = wb.worksheets[0]

# セルに座標値を書き込む
for y in range(int(Yrange)):
    for x in range(int(Xrange)):
        rIdx = (int(Xrange)*y) + x + 1  # Excelのセル座標は1スタートなので+1
        ws.cell(row=rIdx, column=1).value = f"[{y+1},{x+1}]"

# 保存
savePath = 'Z:\\test.xlsx'
wb.save(savePath)
print(f'Excelを保存しました! path={savePath}')

「XY座標の範囲を入力」では、書き込みたい座標範囲を入力します。
Excelに書き込むときは[Y,X]の形式となるので、例えばXを100、Yを50と入力した場合、MAXは[50,100]となります。

「Excelファイルの生成」では、書き込みを行うための新規Excelを生成します。
ちなみに、既存のExcelファイルに対して処理したい場合は以下のようにすることで読み込みが可能です。

wb = openpyxl.load_workbook(‘読み込みたいExcelのパス’)

「先頭のシートを取得」では、どのシートに対して書き込みを行うかを指定します。
今回はインデックスを指定していますが、
23方法でも同様の結果を得ることができます。

# 例1) インデックスを指定
ws = wb.worksheets[0]

# 例2) シート名を指定
ws = wb['Sheet1']

# 例3) アクティブなシートを指定
ws = wb.active

「セルに座標値を書き込む」では、座標範囲を元に各セルに値を書き込んでいます。
Excelのセル座標は1スタートなので注意が必要です。

「保存」では、作成したExcelを指定したパスに保存しています。
Openpyxlでは.xls拡張子に対応していないので、.xlsxを指定してください。

3. 実行結果を確認する

Xを100、Yを50と指定して実行してみました。
Excelに正しく保存できました!

最後に

今回はOpenpyxlを使って、PythonでExcelを操作してみました。
日々使うような処理を作成すれば、業務の効率化ができそうですね。

ここまで読んでいただき、ありがとうございました。
ご質問やご要望、ご相談などありましたら、下記お問い合わせフォームからお気軽にご連絡ください。
http://www.net-nsi.co.jp/toiawase.html

タイトルとURLをコピーしました