こんにちは。Excelって仕事でしか使わないですよね〜。
私は使う機会が全くないですが…。
実はExcelってPythonからでも操作できるんですよ!いちいちソフトを開く手間が省けますね。
今日は簡単に7月の予定表を作ってみたいと思いますぜ。
完成形
祝日と誕生日を入れました。さんとは同じ7月18日が誕生日です。
ソースコードと解説
import openpyxl as px
import date time
Excelを操作するためにはopenpyxlをインポートします。長いモジュール名なのでpxとしました。
現在の日付も取得するためにdatetimeもインポートします。
この2つのモジュールをインポートしないと何もできません。
weekname = ['月','火','水','木','金','土','日']
weeknameという変数(データを入れる箱のようなもの)に曜日を代入しています。
wb = px.Workbook()
ws = wb.active
ws.column_dimensions['D'].width = 60
px.Workbook()で新規シートを作成して、シートをアクティブ化(忘れないこと)します。
Dのセルの幅は60に広げました。
now = datetime.datetime.now()
tm = datetime.date(now.year,7,1)
現在の日付と2019年7月1日以降を取得するコードです。
for i in range(1,32):
ws.cell(column=1,row=i,value=tm.month)
ws.cell(column=2,row=i,value=tm.day)
ws.cell(column=3,row=i,value=weekname[tm.weekday()])
tm = tm + datetime.timedelta(days=1)
繰り返しの処理です。for i in range(1,32):としないと31日分の表が作られません。
30日分の表を作る時はfor i in range(1,31):とします。
Aセル(column=1)には月を、Bセル(column=2)には日にちを、Cセル(column=3)には曜日を入れます。
それを31日になるまで繰り返します。
ws['D15'].value = '海の日'
ws['D15'].font = px.styles.fonts.Font(color='FF0000')
ws['D18'].value = '誕生日 with'
ws['D18'].font = px.styles.fonts.Font(color='FF0000')
セルに文字を入れますが、直接行列を指定して入力します。文字の色は赤にしました。
wb.save('7月の予定表.xlsx')
シートの名前をつけて保存するコードです。名前を変更しなければ、2回目以降は上書き保存になります。
実行結果が冒頭の画像になります。
以上のシートをPythonista 3というアプリで作りました。PythonとExcelについてはこれから勉強していきます!
お読みいただき、ありがとうございました(。)