皆さん、こんにちは!
上越市を拠点にし、「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のパス’)
「先頭のシートを取得」では、どのシートに対して書き込みを行うかを指定します。
今回はインデックスを指定していますが、例2、例3の方法でも同様の結果を得ることができます。
# 例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