python3操作excel之xlwt

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

你可能感兴趣的:(python,python3,xlwt)