【Excel】シリアル値→【Sikuli/Sikulix】日付変換

日付のシリアル値「43313」等を「2018/08/01」の様な形式に変換する方法について詳しくご説明します。また本日の日付、7日後の日付を取得する方法についても加えてご説明します。

Sikuli関連記事はこちら

 

スポンサーリンク

 

はじめに

【Sikuli】によってExcelから読み込んだ2018/08/01等の日付データを業務システム等に自動入力する際、「2018/08/01」ではなく「43313」の様にシリアル値で入力されることがあります。

Excel側のフォーマットを変更するという手もありますが、お客様から提供されたフォーマット等の理由でExcel側の変更は難しい場合もあると思います。

ここでは、日付のシリアル値をSikuli側のプログラム(Python)によって「2018/08/01」「2018-08-01」「20180801」「2018年08月01日」といった形式に変換する方法をご説明していきます。

 

 

【Excel】日付シリアル値→日付形式「YYYY/MM/DD」変換

日付のシリアル値では、1900年1月1日を基準として何日経過しているかを示しています。

しかし、Excelの仕様で1900年2月29日が存在することになってしまっているため、Pythonでシリアル値を変換する場合注意が必要です。

 

①1900年1月1日=シリアル値1として表現

②本来存在しない1900年2月29日を省く

上記2点より、1900年1月1日にシリアル値を足して2を引くことでシリアル値をもとに「YYYY-MM-DD hh:mm:ss」形式で表示させることが可能です。

【コード例】

from datetime import datetime, timedelta
day = datetime(1900,1,1) + timedelta(days=シリアル値 – 2)

 

また、「YYYY/MM/DD」形式で表示させたい場合はstrftimeメソッドにて指定することができます。

【コード例】
day2 = day.strftime(“%Y/%m/%d”)

【Excel】日付シリアル値→日付形式「YYYY-MM-DD」変換

1900年1月1日にシリアル値を足して2を引くことでシリアル値をもとに「YYYY-MM-DD hh:mm:ss」形式で表示させることが可能です。

【コード例】

from datetime import datetime, timedelta
day = datetime(1900,1,1) + timedelta(days=シリアル値 – 2)

 

また、「YYYY-MM-DD」形式で表示させたい場合はstrftimeメソッドにて指定することができます。

【コード例】
day2 = day.strftime(“%Y-%m-%d”)

【Excel】日付シリアル値→日付形式「YYYYMMDD」変換

1900年1月1日にシリアル値を足して2を引くことでシリアル値をもとに「YYYY-MM-DD hh:mm:ss」形式で表示させることが可能です。

【コード例】

from datetime import datetime, timedelta
day = datetime(1900,1,1) + timedelta(days=シリアル値 – 2)

 

また、「YYYYMMDD」形式で表示させたい場合はstrftimeメソッドにて指定することができます。

【コード例】
day2 = day.strftime(“%Y%m%d”)

【Excel】日付シリアル値→日付形式「YYYY年MM月DD日」変換

1900年1月1日にシリアル値を足して2を引くことでシリアル値をもとに「YYYY-MM-DD hh:mm:ss」形式で表示させることが可能です。

【コード例】

from datetime import datetime, timedelta
day = datetime(1900,1,1) + timedelta(days=シリアル値 – 2)

 

また、「YYYY年MM月DD日」形式で表示させたい場合はstrftimeメソッドと文字列結合にて指定することができます。

【コード例】
day2 = day.strftime(“%Y”)+ u”年” + day.strftime(“%m”) + u”月” + day.strftime(“%d”) + u”日”

本日の日付を取得する方法

下記のコードにて本日の日付を取得することができます。

【コード例】

import datetime
today_date = datetime.date.today()

本日から7日後の日付を取得する方法

下記のコードにて本日から7日後の日付を取得することができます。

「days=」の後の数字を変更することで、5日後、10日後など任意に設定可能です。

 

【コード例】

import datetime
today_date = datetime.date.today()
sevendays = today_date + datetime.timedelta(days=7)

サンプルプログラム

ファイル選択画面を表示してエクセル(sample.xlsx)を読み込み、

下記入力フォームに入力することを実現します。

登録日=本日の日付、発生時刻=エクセルから読み込み、回答期限=本日の日付+7日後とします。

【サンプルプログラム】

注意すべき点は、11行目の「from datetime import datetime, timedelta」です。import文は上部に集めたいですが、3行目に記載すると正常に動作しません。

【実行結果】

 

Sikuli関連記事はこちら

スポンサーリンク