見出し画像

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

こんばんは。

未経験からPythonでExcel作業の自動化プログラムを学び始めて6カ月の
かおりです。

今年はPython試験を受験&実務で使えるプログラムを作ります!
本年もどうぞよろしくお願いたします。

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

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

〇Excelファイルを1行ずつ書き込む  

・「2-3 セルを読み書きする」では、1行分のデータを書き込んだので、
1行ずつ複数行分のデータを書き込むには、この作業をループで繰り返す
だけ

・Point:「1行ずつセルを移動する方法」 A列で1行ずつ下に移動するには、行番号を指定する整数型の変数row_numの値を1つずつ増やす

・ row_numは整数型なので、そのままでは文字列の"A"と結合できません。str() で文字列型に変更してから結合する

・ row_numをループ内で1つずつ増やせば、A1、A2、A3・・・・のように「セル番地」が変化するので、1行ずつ下に移動できる

A1形式でA列の参照先を指定する
c=ws  [”A” + str(row_num)]

・サンプルデータ「売上データ.xlsx」の「6月売上」シートに3行分のデータを書き込む

・書き込む3行分のデータは、変数data_listに代入しておく(8~12行目)。

・「リストの中にまたリストを持つ」構造になっている こうすることで、
複数行のデータを1つのリストに格納でき、ループで1行ずつ処理することができる

・ループの最後でrow_num = row_num + 1 を実行すると、row_numを1つずつ増やすことができます(33行目)。

・変数date_listに収めた1行分のリストは、A列~E列に書き込みます。
残ったF列に、文字列の結合で組み立てた数式を書き込みます(31行目)

・表示形式 は、日付の「A列」だけ設定(20行目)・最後に書き込んだブックを別名の「売上データ_6月入力.xlsx」で保存

import openpyxlfrom datetime import datetime
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["6月売上"]
# 書き込むデータ
data_list = [
[datetime(2020,6,1), "株式会社 鈴木商店", "商品A", 7200, 30],
[datetime(2020,6,3), "サン企画 有限会社", "商品A", 7200, 15],
[datetime(2020,6,9), "株式会社 鈴木商店", "商品C", 1200, 20]
]
# 書き込み開始行番号
row_num = 4
for row in data_list:
   c1 = ws["A" + str(row_num)]
   c1.value = row[0]
   c1.number_format = "yyyy/m/d"
   c2 = ws["B" + str(row_num)]
   c2.value = row[1]
   c3 = ws["C" + str(row_num)]
   c3.value = row[2]
   c4 = ws["D" + str(row_num)]
   c4.value = row[3]
   c5 = ws["E" + str(row_num)]
   c5.value = row[4]
   c6 = ws["F" + str(row_num)]
   # 数式の組み立て
   c6.value = "=D" + str(row_num) + "*E" + str(row_num)
   # 1行進む
   row_num = row_num + 1
wb.save("売上データ_6月入力.xlsx")


実行結果:

画像1


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

本日のエラー : なし

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

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