PythonでExcelを操作してみよう!

By @torachibi6/17/2019japanese

こんにちは。Excelって仕事でしか使わないですよね〜。
私は使う機会が全くないですが…。

実はExcelってPythonからでも操作できるんですよ!いちいちソフトを開く手間が省けますね。

今日は簡単に7月の予定表を作ってみたいと思いますぜ。


完成形

07AB6C11-8662-409A-AAA4-53D6253BA606.jpeg

祝日と誕生日を入れました。@osarusanさんとは同じ7月18日が誕生日です。


ソースコードと解説

7FACB26E-4F28-452E-A70E-A899D9856E03.jpeg


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 @osarusan'
ws['D18'].font = px.styles.fonts.Font(color='FF0000')

セルに文字を入れますが、直接行列を指定して入力します。文字の色は赤にしました。

wb.save('7月の予定表.xlsx')

シートの名前をつけて保存するコードです。名前を変更しなければ、2回目以降は上書き保存になります。
実行結果が冒頭の画像になります。


以上のシートをPythonista 3というアプリで作りました。PythonとExcelについてはこれから勉強していきます!

お読みいただき、ありがとうございました(^。^)

29

comments