はじめに
こんにちは。風助です。
今回はExcelに日付を自動入力できるプログラムを作ってみましょう。
平日なら黒、土曜なら青、日曜祝日なら赤というようにコードを組んでいきます。
OpenPyXLの使い方というよりはそれ以外のほうの比率が大きいですね。
平日と土日祝日の判別
それでは早速やっていきましょう。
コードはこんなです。
import openpyxl
from openpyxl.styles.fonts import Font
import datetime
import calendar
import locale
import jpholiday
wb = openpyxl.Workbook()
Sheet = wb.active
year = 2021
mon = 11
# まずは祝日かどうかの判定。そのあと、祝日以外の日の中で平日土日の判定。
locale.setlocale(locale.LC_TIME, 'ja_JP')
day = calendar.monthrange(year, mon)[1]
dayE = int(day) + 1
for day in range(1, dayE):
dt = datetime.date(year, mon, day)
dow = dt.strftime('%a')
Sheet.cell(row=1, column=day).value = '{}日({})'.format(day, dow)
doh = jpholiday.is_holiday(dt)
holiday = jpholiday.is_holiday(dt)
if holiday is True:
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11, color='FF0000')
else:
if dow == '土':
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11, color='0070C0')
elif dow == '日':
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11, color='FF0000')
else:
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11)
wb.save('test.xlsx')
このコードでは、まず祝日か否かを判断し、祝日なら色を変え、そうでなければ平日土日の判定を行います。
順を追って解説していきます。
まずはインポート。必要なライブラリを入れます。皆さんがどんな環境で作業しているかはわかりませんが、必要なものがあればその都度pipでダウンロードしてください。
そして次にワークシートの作成を行います。
year = 2021
mon = 11
次にいくつか変数の指定を行いました。この変数は月の指定をするためのものです。
その次からが平日土日祝日を判断するためのコードになります。
それぞれのライブラリの詳しい使い方は後日、別の投稿で解説予定です。今回はざっくりとした流れの説明だけ。
まずは地域の指定。今回は日本です。
locale.setlocale(locale.LC_TIME, 'ja_JP')
そして次に入力したい月のデータを取り出します。ここでは何日間なのかというデータのみです。
day = calendar.monthrange(year, mon)[1]
このコードではrange()を使い、forループで処理しています。なので日数+1日を計算しておきます。
dayE = int(day) + 1
そしてforループ。
ループで指定した日の曜日を取得します。
dt = datetime.date(year, mon, day)
dow = dt.strftime('%a')
この%aというものを指定すると「月」とか「水」みたいに1文字で曜日が取得可能です。
Sheet.cell(row=1, column=day).value = '{}日({})'.format(day, dow)
そしてシートに入力。この段階では文字列の指定のみで、この後フォントを変更し色を変えていきます。
doh = jpholiday.is_holiday(dt)
holiday = jpholiday.is_holiday(dt)
if holiday is True:
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11, color='FF0000')
祝日の場合はここで文字の色が赤くなります。
jpholiday.is_holiday() は指定した日が日本の祝日ならTrueを返します。なので祝日か否かを判定可能です。
else:
if dow == '土':
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11, color='0070C0')
elif dow == '日':
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11, color='FF0000')
else:
Sheet.cell(row=1, column=day).font = Font(name='Meiryo UI', size=11)
ここでは平日土日の判定をしています。文字列で判断しているので仕組みが分かれば単純です。
wb.save('test.xlsx')
最後にファイルを保存すれば終わりです。
おわりに
今回はExcelファイルに日付を入力し、曜日によって色を変えました。
皆さんの参考になればうれしいです。
それでは次回までさようなら。
コメント
Hello There. I found your blog the usage of msn. This is a very neatly written article. I’ll be sure to bookmark it and come back to learn extra of your helpful info. Thank you for the post. I will definitely comeback.