XLRDおよびXLWT Python LibsのDateTime Issue
質問
あるExcelスプレッドシートから別のスプレッドシートまでの日付を作成しようとしています。現在、私はこのような私が望むものではないExcelで表現を取得しています: "40299.2501157407"
コンソールに正常に印刷する日付を取得できますが、Excelスプレッドシートに正しく書き込むことができないようです。データはExcelの日付タイプでなければなりません。テキストバージョンはありません。
これが日付を読み取る行です。
date_ccr = xldate_as_tuple(sheet_ccr.cell(row_ccr_index, 9).value, book_ccr.datemode)
これが日付を書く行です:
row.set_cell_date(11, datetime(*date_ccr))
いくつかの比較以外のこれらの2行の間にDate_ccrには何も行われていません。
何か案は?
解決
フローティングポイント番号をスプレッドシートに直接書き込み、セルの数値形式を設定できます。を使用して形式を設定します num_format_str
の XFStyle
値を書くときのオブジェクト。
https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html#xlwt.worksheet.write-method
次の例には、日付01-05-2010を記述します。 (06:00:10の時間も含まれますが、これはこの例で選択された形式に隠されています。)
import xlwt
# d can also be a datetime object
d = 40299.2501157407
wb = xlwt.Workbook()
sheet = wb.add_sheet('new')
style = xlwt.XFStyle()
style.num_format_str = 'DD-MM-YYYY'
sheet.write(5, 5, d, style)
wb.save('test_new.xls')
XLWTソースコードの例フォルダーには、番号形式(num_formats.py)の例があります。私のWindowsマシンで:c: python26 lib site-packages xlwt の例
Excel Storeの日付について読むことができます(このページの3番目のセクション): https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html