PythonでExcelを自動化すると便利! Excelの読込・書込の基本操作紹介
目次
こんにちは。ぐっさんです。
今もなお、業務では欠かせないExcelですが、テンプレートを各プロジェクトに配布して、サマリのエクセルを作りたい時など、結構困ってます。
VBAで集計してもよいのですが、せっかくなのでPythonを使って集計してみようと思ったら、思いのほか簡単にできそうなので、紹介します。
まずは準備
Pythonのインストールについては、今回は、割愛しますが、下記の記事が参考になると思います。
ビッグデータを使って統計分析がしたい! 【準備編】
記事では「ANACONDA」をインストールの例にしていますが、こちらでPythonをインストールでも問題ありません。
Pythonを少しだけ知りたい方は、こちらがおすすめです。
入門しない程度にさわってみる、ゆるふわPython講座
今回は、外部ライブラリのopenpyxlを使います。openpyxlを検索してみるといろいろなサイトでも紹介されており、情報も多いので、おすすめです。openpyxlのインストールは、コマンドプロンプトで下記を実行するとインストールできます。
pip install openpyxl
Excelにアクセスしてみる
まずは、準備でインストールしたopenpyxlをimportします。
import openpyxl
続いて、エクセルを読み込んでシートを選択します。
ここでは、プログラムと同じフォルダに「SampleExcel.xlsx」というファイルが存在することを想定してます。
wb = openpyxl.load_workbook('./SampleExcel.xlsx') sheet = wb['Sheet1']
処理の終了時は、ファイルを閉じます。
wb.close()
Excelに保存されている値を読み込んでみる
Excelへのアクセスはできたので、Excelに保存している値を読み込んでみます。
値を読み込むには、Excelにアクセスし時に作成したsheetに対してアクセスします。
excelValue = sheet.cell(row=1, column=1).value
行と列は、1から始まり(row=1, column=1)で、A1のセルを指します。
下記の指定方法もできます。
excelValue = sheet['A1'].value
Excelに書き込んでみる
次に書込みになります。読み込んだ際と同様にシートに対して、値を設定することで、Excelに書込みができます。書き込んだら、保存を忘れないようにしましょう。
sheet.cell(row=1, column=1).value = excelValue wb.save('./SampleExcel.xlsx')
これらをまとめて実行すると
今までの内容をまとめると下記のようなプログラムになります。Excelの値を読み込んで、すでに入力されている数字に対して1を足して書き込みます。下記の内容を、「sample.py」と保存しておきます。
import openpyxl wb = openpyxl.load_workbook('./SampleExcel.xlsx') sheet = wb['Sheet1'] excelValue = sheet.cell(row=1, column=1).value excelValue = excelValue + 1 sheet.cell(row=1, column=1).value = excelValue wb.save('./SampleExcel.xlsx') wb.close()
実行する際は、コマンドプロンプトで下記のように実行します。
py sample.py
保存する際は、UTF-8で保存しましょう。ファイル名に日本語が含まれる場合など、下記のエラーが発生します。
SyntaxError: Non-UTF-8 code starting with ‘\x83’ in file C:\****\sample.py on line 3, but no encoding declared; see https://python.org/dev/peps/pep-0263/ for details
Excelが開いていると、下記のエラーが出るので、閉じてから実行しましょう。
PermissionError: [Errno 13] Permission denied: ‘./SampleExcel.xlsx’
SampleExcel.xlsxのA1セルに0を入力しておきます。A1に数字以外の値が入っていると、下記のエラーが発生します。
TypeError: unsupported operand type(s) for +: ‘NoneType’ and ‘int’
まとめ
ここまでできたら、もうこっちのものですね。Pythonの条件文や繰り返し文をもとに、集計や検索をして、使い放題です。
プログラマーにとっては、勉強にもなるので、いろいろと試してみるといいと思います。Pythonを使ってもう少し深いところについては、次の機会に。
それでは、良いPythonライフを!
《関連記事》