見出し画像

12月31日 Python学習日記 1日1プログラム! Excel自動化 2-4 セルを1行ずつ読み書きする①

おはようございます。

プログラミングを学び始めて5カ月のかおりです。

今日は、「 PythonでExcel、メール、Webを自動化する本 」より、

「2-4 セルを1行ずつ読み書きする」 を実践しました💪

〇Excelファイルを1行ずつ読み込む

・openpyxlには、1行ずつ読み込める機能があるので、書き込む場合、for文でループしながら1行ずつセルを移動すれば簡単に処理できる

・openpyxlのiter_rows()とfor文を組み合わせると、「1行分のセル」をループで1行ずつ取得できる

・iterとはiterate(イタレーション)の頭文字、繰り返しの意味

・for文のinの後ろにws.iter_rows()を書く

・()に何も入れないと、「行番号=1、列番号=1」(つまり、A1セル)を起点として順次取得を始める

・mir_row= と min_col=で開始する行と列の番号を指定することも可 ※ヘッダーや行見出しがある表でデータだけ取得する場合に利用する 

for文で1行ずつ読み込む
for row in ws.iter_rows(min_row=行番号, min_col=列番号):
   処理

・「4月売上」シートから売上データを1行ずつ取得して、print()で表示する データが4行目から始まっているので、iter_rows()のかっこの中には「min_rows=4」を指定

import openpyxl
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["4月売上"]
for row in ws.iter_rows(min_row=4):
   print(row)

実行結果:
(<Cell '4月売上'.A4>, <Cell '4月売上'.B4>, <Cell '4月売上'.C4>, <Cell '4月売上'.D4>, <Cell '4月売上'.E4>, <Cell '4月売上'.F4>)
(<Cell '4月売上'.A5>, <Cell '4月売上'.B5>, <Cell '4月売上'.C5>, <Cell '4月売上'.D5>, <Cell '4月売上'.E5>, <Cell '4月売上'.F5>)
(<Cell '4月売上'.A6>, <Cell '4月売上'.B6>, <Cell '4月売上'.C6>, <Cell '4月売上'.D6>, <Cell '4月売上'.E6>, <Cell '4月売上'.F6>)
(<Cell '4月売上'.A7>, <Cell '4月売上'.B7>, <Cell '4月売上'.C7>, <Cell '4月売上'.D7>, <Cell '4月売上'.E7>, <Cell '4月売上'.F7>)
(<Cell '4月売上'.A8>, <Cell '4月売上'.B8>, <Cell '4月売上'.C8>, <Cell '4月売上'.D8>, <Cell '4月売上'.E8>, <Cell '4月売上'.F8>)
(<Cell '4月売上'.A9>, <Cell '4月売上'.B9>, <Cell '4月売上'.C9>, <Cell '4月売上'.D9>, <Cell '4月売上'.E9>, <Cell '4月売上'.F9>)

・実行結果を見ると、1行分のセルが タプルという「 丸かっこ()」で囲まれている
・リストは「 角かっこ[ ] 」
・タプルは、リストと同様に複数のデータを格納できるが、あとから要素を追加したりすることはできない つまり、「読み取り専用」に使用される
・このように「1行分のセル」はタプルで取得する

「1つのセル」を1つずつ取得するには、リストと同じようにfor文が使ええる

 セルの値は.valueで取得、セルの値を直に出力するのではなく、1行読み込むごとに「空のリスト」を作成して、その中にセルの値を1つずつ追加し、print()でリスト表示する

import openpyxl
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["4月売上"]
for row in ws.iter_rows(min_row=4):
   value_list = []   #空のリストを作成
   for c in row:
       value_list.append(c.value) #1行の中のセルの値を1つずつリストに追加
   print(value_list)
実行結果:
[datetime.datetime(2020, 4, 1, 0, 0), '株式会社 鈴木商店', '商品C', 1200, 20, '=D4*E4']
[datetime.datetime(2020, 4, 8, 0, 0), 'サン企画 有限会社', '商品A', 7200, 5, '=D5*E5']
[datetime.datetime(2020, 4, 14, 0, 0), '株式会社 鈴木商店', '商品A', 7200, 3, '=D6*E6']
[datetime.datetime(2020, 4, 17, 0, 0), '三和商事 株式会社', '商品B', 3800, 10, '=D7*E7']
[datetime.datetime(2020, 4, 23, 0, 0), '三和商事 株式会社', '商品C', 1200, 50, '=D8*E8']
[datetime.datetime(2020, 4, 27, 0, 0), 'サン企画 有限会社', '商品A', 7200, 8, '=D9*E9']


Pythonのメリットの一つに、動くプログラムを実際に体験するまでのスピードが速いことが挙げられると思います。プログラミング学習のモチベーションが高まりますよ!プログラミング初心者の方にはぜひ、PythonでのExcel作業の自動化から体験してみて欲しいです!!

本日のエラー : なし

本日もおつかれさまでした(^^♪

最後までお読み頂きありがとうございました!時間は有限です。ほんのちょっとでもあなたの背中を押せるお手伝いができていたら嬉しいです。「スキ」ボタンを励みに、もっとあなたを応援できるように頑張ります💛