pyExceleratorの日付解釈

pyExceleratorは、PythonでWin32.COMを使わずにExcelを読み書きするモジュールです。Excelファイル作成のサンプルコードは豊富なのですが、読み込みサンプルは添付されていません。読み込みは、とにかく文字か数字が読めればいいということ?たしかに、簡単だし、他に用途もなさそうだけど。

import pyExcelerator
book = pyExcelerator.parse_xls('hoge.xls')
for sheet_name, sheet_data in book
   for pos, data in sheet_data.items():
       print "%d,%d : %s" % (pos[0], pos[1], data)

ただこれ、文字列と数値はいいんだけど、日付もExcelの内部データそのまま数値として読み取ってしまいます。もし、読み取ったセルの数値を日付として解釈したければ、こんな感じで処理するとうまくいきます。

from datetime import datetime, timedelta
BASEDAY = datetime(1900,1,1) - timedelta(2)

def excel2native(value):
    return BASEDAY+timedelta(value)

# data = 日付解釈したいExcelのセルの数値
print excel2native(data)
print excel2native(data).date() #日付のみ
print excel2native(data).time() #時刻のみ

なんで基準が1900年1月1日の2日前なのかはわかりませんが、うまくいってるのでまあいいや。