OpenPyXLの使い方~日付を入力しよう~

はじめに

こんにちは。風助です。
今回は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ファイルに日付を入力し、曜日によって色を変えました。
皆さんの参考になればうれしいです。

それでは次回までさようなら。

コメント

  1. 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.

タイトルとURLをコピーしました