2

このコードのビットに問題があります

#data_list = some data
wb = xlwt.Workbook()
s = wb.add_sheet("Test Sheet")
for c, data in enumerate(data_list):
        xf=None
        if isinstance(data, datetime.time):
                xf = xlwt.easyxf(num_format_str='HH:MM:SS') #works
        elif isinstance(data, datetime.date):
                xf = xlwt.easyxf(num_format_str='MM/DD/YYYY') #doesn't work
        if xf:
                sheet.write(r+1,c,data, xf)
        else:
                sheet.write(r+1,c,data)

出力では、日付はすべて最初は「#####」として表示されます。各列のセルを操作することで、Excelで適切にフォーマットできますが、時間がかかります。num_format_strで少し遊んでみましたが、今のところ運がありません。

4

1 に答える 1

6

これについてもう少し考えてみてください。列が狭すぎることが問題である場合は、スクリプトで列幅を明示的に設定することで修正できます

for c, data in enumerate(data_list):
    xf=None
    sheet.col(c).width = len(str(data))*256 
    if isinstance(data, datetime.time):

0xlwtの幅は、デフォルトフォントの文字の幅の1/256の単位で設定されます。

于 2011-06-16T18:26:10.900 に答える