見出し画像

12月29日 Python学習日記 1日1プログラム! Excel自動化 2-3 プログラムでセルの値を読み書きしよう②

こんばんは。

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

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

「2-3 プログラムでセルの値を読み書きしよう」 を実践しました💪


〇セルの値を読み取る

ブック→シート→セルの順でアクセスし、ようやくセルの値を読み書きできる

「セルの値を読み取る」には、次のようにセルの変数に.valueを付けて実行する

#セルの値の読み取り
#変数にcにセルが代入されている場合
c.value

・「4月売上」シートから、1行分(4行目の「A4」から「F4」まで)のセルのセルを読み取る
・「A4」から「F4」のセルをそれぞれ変数c1~c6に代入して、.valueを付けて取得した値をprint()で出力します。

import openpyxl

wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb ["4月売上"]

c1 = ws ["A4"]     #セル番地で取得
print(c1.value)
c2 = ws ["B4"]     
print(c2.value)
c3 = ws ["C4"]     
print(c3.value)
c4 = ws ["D4"]     
print(c4.value)
c5 = ws ["E4"]     
print(c5.value)
c6 = ws ["F4"]     
print(c6.value)
実行結果:
2020-04-01 00:00:00
株式会社 鈴木商店
商品C
1200
20
=D4*E4

・日付と数式はセルの表示と異なる 

・日付が入力されているセルからは、「datetime型」という「日時専用のデータ型」で値が取得される

・数式が入力されているセルからは、数式の計算結果ではなく「数式そのもの」が取得される。

〇セルに値を書き込む

「セルの値を書き込む」には、次のようにセルの変数に.valueを付けてそこに値を代入する。

#セルへの値の書き込み
#変数にcにセルが代入されている場合
c.value = 値

「4月売上」シートの最終行の下に、1行分の売上データを追加する。「A10」から「F10」のセルをそれぞれ変数c1~c6に代入し、.valueを付けて、そこに値を代入する。最後に、書き込んだブックを別名の「売上データ_4月修正.xlsx」で保存します。

import openpyxl
import datetime

wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["4月売上"]

c1 = ws["A10"]
c1.value = datetime.datetime(2020, 4, 30) #日付のデータを作成
c1.number_format = "yyyy/m/d"
c2 = ws["B10"]
c2.value = "株式会社 鈴木商店"              #クウォートで囲んだ文字列
c3 = ws["C10"]
c3.value = "商品B"                    #クウォートで囲んだ文字列
c4 = ws["D10"]
c4.value = 3800                         #数値はそのまま代入
c4.number_format = "#,##0"
c5 = ws["E10"]
c5.value = 12                          #数値はそのまま代入
c6 = ws["F10"]
c6.value = "=D10*E10"                    #数式はクウォートで囲む
c6.number_format = "#,##0"

wb.save("売上データ_4月修正書式.xlsx")

画像1

〇セルの表示形式を設定する

・日付もExcelでは「数値」として扱われる

・セルに1を入力して、表示形式を日付に変更すると「1900/1/1」と表示され、この数値を「シリアル値」と呼ばれる

・数値の表示形式もopenpyxlで設定できる。セルの変数に.number_formatを付けて=の左に置き、設定したい表示形式を「ユーザー定義の書式記号」で代入する。


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

本日のエラー : なし

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

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