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

in #japanese5 years ago (edited)

こんにちは。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についてはこれから勉強していきます!

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

Sort:  

Congratulations @torachibi! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published a post every day of the week

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

You can upvote this notification to help all Steem users. Learn how here!

おお、今年は木曜日なんですねw(゜o゜)w
お互い良い歳を重ねましょう(*´∀`)

誕生日覚えててくれてありがとうございます!( ;∀;)

Posted using Partiko Android

いつもは海の日と重なるんですけど、今年は平日に誕生日ですね(^。^)
毎年良い一年を過ごしたいものですね^_^

Coin Marketplace

STEEM 0.15
TRX 0.16
JST 0.028
BTC 68804.96
ETH 2441.52
USDT 1.00
SBD 2.33