使用xlwt写入和格式化datetime.date对象
我在这段代码上遇到了一些麻烦
#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为单位来设置的。