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)

在输出中,日期最初都显示为“#####”。我可以通过与每列中的单元格交互来正确格式化它们,但这很耗时。我试着玩了一下 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 回答