先日PythonでExcelシートを作成の上、グラフを作成・出力する方法をまとめました。
elsammit-beginnerblg.hatenablog.com
今回は書き込みとは新規作成とは逆にExcelファイルの読み込みに関してまとめていきたいと思います。
さらに、読み込んでいるファイルに対する追記もまとめます。
■環境構築
今回も前回と同様に、openpyxlを用います。
openpyxlに関しては前回まとめましたので割愛。
インストール下記コマンドでOK。
pip install openpyxl
■Excelファイル読み込み
では早速Excelファイルからデータを読み込んでみたいと思います!!
Excelファイル名ですが、test.xlsxとし、ファイル内には、
が書き込まれているものとします。
コードはこちら。
import openpyxl FILENAME = "test.xlsx" def ReadExcel(): wb = openpyxl.load_workbook(FILENAME) sheet = wb['Sheet1'] count = 1 while True: cell = sheet["A"+str(count)] print(cell.value) count+=1 if cell.value == None: print("finish") return execlist = cell.value.split("\n") #return ReadExcel()
Excelファイルを読み込むコードは、
wb = openpyxl.load_workbook(FILENAME)
になります。
その後、シートを
sheet = wb['Sheet1']
にて指定します。
"Sheet1"はExcelのシート名になります。
シート内の値は、
cell = sheet[セル値] value = cell.value
で取得できるので、"セル値"に読み出したい値を指定すればOKです。
今回はA列を読み出したいので、
count = 1 while True: cell = sheet["A"+str(count)] print(cell.value) count+=1 if cell.value == None: print("finish") return execlist = cell.value.split("\n")
といったコードとしました。
本コードでは、
A1、A2、A3、、、
に書き込まれている値を読み出しています。
A**が空欄であった場合、Noneになるので、
空欄であったらwhile文を抜けるようにしました。
最後に、
cell.value
にて取得した値は文字列で取得できるので、
セル内が複数行文字が下記まれていた場合には、
split("\n")で改行毎に分割が行えます。
こちらのコードを実行すると、
Hello World AAA BBB CCC None finish
といった結果が得られるかと思います。
■Excelファイルへの追記
次にすでに存在するExcelファイルへ追記する方法です。
Excelファイルは先ほどのtext.xlsxを用います。
実施することは、
・A列にoが含まれている場合にはYes、含まれていない場合にはNoをB列に書き込み
を行う。とします。
コードはこちら。
import openpyxl FILENAME = "test.xlsx" def ReadAndWrite(): wb = openpyxl.load_workbook(FILENAME) sheet = wb['Sheet1'] count = 1 while True: cell = sheet["A"+str(count)] print(cell.value) if cell.value == None: print("finish") wb.save(FILENAME) return writeResult = "OK" if "o" in cell.value: writeResult = "NG" sheet['B' + str(count)] = writeResult count+=1 ReadAndWrite()
先ほどと同様に、
wb = openpyxl.load_workbook(FILENAME)
sheet = wb['Sheet1']
でExcelファイル内シートを選択し、
cell = sheet["A"+str(count)]
でセルを読み出します。
そして、
writeResult = "OK" if "o" in cell.value: writeResult = "NG" sheet['B' + str(count)] = writeResult count+=1
でセル内の値に"o"が含まれている場合にはYesそれ以外はNoを書き込みます。
書き込んでいるコードは、
sheet['B' + str(count)] = writeResult
です。
書き込む際は.valueを付ける必要はないです。
whileループでA列が空欄(None)になるまで続け、
空欄を検知したら、
wb.save(FILENAME)
で追記した結果を保存して終了させています。
本コードを実行すると、
といった結果が得られ、想定通りB列にOK/NGが書き込まれているかと思います。
■最後に
今回はExcelファイルの読み出しと追記に関してまとめてみました。
読み出し・追記もopenpyxlを使用すれば簡単でした。
これで大体のエクセル操作は出来るようになったかな?
他に使いたい機能とか出てきたら調べた上でブログにまとめたいと思います。