xlwt是python创建excel的lib,在本人的操作过程中,发现xlwt中的一些比较常用而在网上又不是很容易找到的使用方法,这里写下这篇博客,供自己以后可能再次使用;
(1)水平上的格式,居中,偏左,偏右的使用:
import xlwt
#设置单元格格式
style = xlwt.XFStyle()
#设置字体是否居中
alignment = xlwt.Alignment()
# 设置水平居中
alignment.horz = ali_horz
# 设置垂直居中
alignment.vert = 0x01
style.alignment = alignment
在xlwt中,0x01表示居中,0x02表示左端对齐,0x03表示右端对齐,这里设置成居中的情况
(2)设置数值类型的格式
import xlwt
#设置单元格格式
style = xlwt.XFStyle()
num_format_str = '#,##0.00'
style.num_format_str = num_format_str
在xlwt中,对于数值类型的情况,可以设置成多种字符,这里设置成保留两位小数,除此之外,还包括数字上有千分位;
除此之外,还包含如下的格式:
fmts= [
'general',
'0',
'0.00',
'#,##0',
'#,##0.00',
'"$"#,##0_);("$"#,##',
'"$"#,##0_);[Red]("$"#,##',
'"$"#,##0.00_);("$"#,##',
'"$"#,##0.00_);[Red]("$"#,##',
'0%',
'0.00%',
'0.00E+00',
'# ?/?',
'# ??/??',
'M/D/YY',
'D-MMM-YY',
'D-MMM',
'MMM-YY',
'h:mm AM/PM',
'h:mm:ss AM/PM',
'h:mm',
'h:mm:ss',
'M/D/YY h:mm',
'_(#,##0_);(#,##0)',
'_(#,##0_);[Red](#,##0)',
'_(#,##0.00_);(#,##0.00)',
'_(#,##0.00_);[Red](#,##0.00)',
'_("$"* #,##0_);_("$"*(#,##0);_("$"* "-"_);_(@_)',
'_(* #,##0_);_(* (#,##0);_(*"-"_);_(@_)',
'_("$"*#,##0.00_);_("$"* (#,##0.00);_("$"*"-"??_);_(@_)',
'_(* #,##0.00_);_(* (#,##0.00);_(*"-"??_);_(@_)',
'mm:ss',
'[h]:mm:ss',
'mm:ss.0',
'##0.0E+0',
'@'
]
这里引用了http://blog.sina.com.cn/s/blog_4951301d0101elxq.html这篇博客的数据;
(3)列宽的设置
在生成excel时,常会出现列宽过窄的情况,这里可以通过以下的情况设置excel的列宽:
workbook = xlwt.Workbook(encoding='utf-8')
sheet = workbook.add_sheet('Sheet1',cell_overwrite_ok=True)
for i in range(len(10)):
col = sheet.col(i)
col.width = 20*240
workbook.save(‘1.xls’)
根据我在博客上的了解,xlwt不支持列宽自动调整
(4)xlwt使用时出现的一些问题
在使用xlwt时,出现过一下两种问题:
(a)采用xlwt生成.xlsx文件,生成的.xlsx文件打开报错,后来了解到,xlwt出现的比较早,暂时不支持.xlsx类型的excel,可以采用其他的lib进行处理
(b)第二个是生成excel之后,虽然能够打开,但是格式不对,并且报错:‘此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。关闭其他文档再试一次可能有用’,我在网上没有找到,但是看到了下面一篇博客,https://www.cnblogs.com/zlytu/archive/2012/10/12/2721408.html,他是采用java生成excel的,也出现了我这个问题,根据他所说的,大致的原因是因为创建了太多的Font和style,所以在style和font如果能够公用的话,就公用,不要每个单元格都创建一个style或者font