2

あるExcelスプレッドシートから別のスプレッドシートにいくつかの日付を書き込もうとしています。現在、「40299.2501157407」のように、私が望んでいるものとはまったく異なるExcelでの表現を取得しています。

日付をコンソールに正しく印刷することはできますが、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に対して何も実行されていません。

何か案は?

4

1 に答える 1

9

浮動小数点数をスプレッドシートに直接書き込んで、セルの数値形式を設定できます。値を書き込むとき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\examples

Excel がどのように日付を格納するかについて読むことができます (このページの 3 番目のセクション): https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html

于 2010-06-25T15:47:14.697 に答える