使用xlwt写入和格式化datetime.date对象

2 投票
1 回答
4464 浏览
提问于 2025-04-16 19:43

我在这段代码上遇到了一些麻烦

#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,但到目前为止还没有成功。

1 个回答

6

再想想这个问题,如果你的问题列太窄了,你可以通过在你的脚本中明确设置列宽来解决。

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

在xlwt中,列宽是以默认字体中0这个字符宽度的1/256为单位来设置的。

撰写回答