【記事の内容】
・PythonでExcelを読みだして、編集して、保存しましょう!
・本記事では【pip】と【Google Colab】どちらでもできるように構成しています
・まずは動かしてみるが、コンセプトです!
まずは簡単な例題で、PythonでExcelを扱うのがどういう仕組みなのかを知りましょう!
それさえ分かってしまえば、関数の組み合わせて様々な操作が思いのままです!
もちろん、自動で!
【使用コードと、今回のゴールはコチラ!】
import openpyxl
workbook = openpyxl.load_workbook("test_1.xlsx")
sheet = workbook["Sheet1"]
# セルの内容を読みだして書き加える
value_1 = sheet.cell(row = 1, column = 1).value
value_1 = value_1 + "のコピーです"
# Sheet1中の指定座標の値(value)を書き換える
sheet.cell(row = 1, column = 2).value = value_1
# この時点では書き換えたのはプログラムが仮想的につくったCellでしかない
# よって、最後に保存(上書き)する
workbook.save("test_1.xlsx")
【ゴール】
では、始めましょう!
前準備
ライブラリ【openpyxl】の導入
【openpyxl】は、PythonでExcelを扱うためのライブラリです。
【Google Colab】の方は予めインストールされているのでこの節をスキップしてください。
本記事では【pip】でインストールいたします。
pip install openpyxl
テスト用のExcelファイル作成
【test_1.xlsx】という名称で、以下のようなExcelファイルを作成してください。
作成しましたら、ご自分のPCで行う方は任意のフォルダへ、【Google Colab】の方は、Colabを起動して以下のコードで保存するか、その下の画像を参考に【Google Colab】内のフォルダに入れてください。
【コードで入れる場合】
from google.colab import files
uploaded = files.upload()
【フォルダに直接入れる場合】
(2パターンのどちらか)
2パターンは、見え方は違いますが、同じフォルダにファイルを入れています。
ここが実行ファイルと同じ階層のフォルダ扱いとなります。
(よくわからない人も、今回は気にしなくて大丈夫です)
【実践】読みだし・編集・保存しましょう
読み出し
ご自身のPCの方は、先ほどのExcelファイルと同じフォルダに、以下のコードで実行ファイルを入れて、実行してください。
【Google Colab】の方は、そのままコードのエリアにコピペして実行してください。
import openpyxl
# test_1.xlsxを読み込む
workbook = openpyxl.load_workbook("test_1.xlsx")
# Sheet1を読み込む
sheet = workbook["Sheet1"]
# Sheet1中の指定座標の値(value)を取得する
# row タテ, colmn 横
value_1 = sheet.cell(row = 1, column = 1).value
print("value_1 =", value_1)
value_2 = sheet.cell(row = 2, column = 1).value
print("value_2 =", value_2)
value_3 = sheet.cell(row = 3, column = 1).value
print("value_3 =", value_3)
【実行後】
value_1 = AAA
value_2 = BBB
value_3 = CCC
無事にExcelの中身が表示されたら、読み出しは完了です。
コードのみで言えば、たったの4行で読み込めてしまうんですね! やはりライブラリというのは強力です。
もしもコード内のコメントでは説明が不十分だという方は、記事後半にまとめましたので、そちらをご覧頂ければと思います。
編集・保存
それでは、コチラのコードで実際に読みだした内容を編集して保存しましょう!
import openpyxl
workbook = openpyxl.load_workbook("test_1.xlsx")
sheet = workbook["Sheet1"]
# セルの内容を読みだして書き加える
value_1 = sheet.cell(row = 1, column = 1).value
value_1 = value_1 + "のコピーです"
# Sheet1中の指定座標の値(value)を書き換える
sheet.cell(row = 1, column = 2).value = value_1
# この時点では書き換えたのはプログラムが仮想的につくったCellでしかない
# よって、最後に保存(上書き)する
workbook.save("test_1.xlsx")
【実行後のExcel内】
以上のように、用意したExcelファイルの中身が変化したでしょうか。
であれば、貴方は無事、PythonでExcelを編集することに成功しました!
重要なのは、やはり【sheet.cell(row = 1, column = 2).value】の部分で、
コチラは読み出す時も、中身を編集する時も両方使います。
さて、以降はコードの説明となりますので、『もっと実践をしたいんだ!』という方は、ぜひ他の記事もどうぞ!
コードの説明
重複する部分がほとんどですので、“編集・保存”で使用したコードを基に説明していきます。
ライブラリのインポート
import openpyxl
Excel操作機能を付与するライブラリ【openpyxl】をインポートします。
今回は行いませんでしたが、これによってシート自体の編集・コピー・削除さえも可能で、各セルの書式変更さえも出来てしまうくらい強力な機能を持っています。
そういった機能を持つ関数を【一発検索できる】記事も作成中ですので、その時はご一読頂ければ幸いです。
ブック・シート情報の取得
workbook = openpyxl.load_workbook("test_1.xlsx")
sheet = workbook["Sheet1"]
1行目で、Excelファイル(ブック)のデータ取得を行い、
2行目で、シートのデータを取得しています。
感覚的に言えば、原本から一旦内容をコピーして、自分の手元に持ってくる感じでしょうか。
セル内容の読み出し・書き換え
value_1 = sheet.cell(row = 1, column = 1).value
value_1 = value_1 + "のコピーです"
# Sheet1中の指定座標の値(value)を書き換える
sheet.cell(row = 1, column = 2).value = value_1
1行目でセルの内容を取り出します。
Excel内で言うところの rowは縦軸(1, 2, 3・・・)、colmunは横軸(A, B, C・・・)となります。
つまり【sheet.cell(row = 3, column = 1).value】であれば、Excel内の【3A】のセル内容を読み出すという意味になるので覚えておきましょう。
2行目では、読み出したセルの中身に文章を追加しています。
最後の行で、追加済みの文章を指定したセルに書き込んでいます。
しかし、ここではまだプログラム上の書き込みなので、次の保存(上書き)が必要になるわけです。
保存(上書き)
workbook.save("test_1.xlsx")
そして最後に、読み込んだExcelファイルと同じ名称で保存し、上書きを行います。
最後に
以上、PythonのライブラリによるExcelの操作、いかがでしたでしょうか。
もちろん、自動化と謳っておきながらこれで終わることはしませんので、これを応用する記事を書いていきます!
それでは、仕事の効率化が世界を満たすことを願いまして、また次回お会いしましょう!