前面介绍过一个Excel写入模块:xlwt,此模块虽然可以实现Excel的写入,但是它功能还是不够强大,而且只支持xls后缀的文件,因此,如果针对要求比较高,且要接近Excel本身一样的操作,xlwt还是不够胜任,那有没有功能跟Excel本身操作一样的呢,答案是肯定的,那就是我们接下来要介绍的模块:XLsxWriter。
XLsxWriter相比于其他的Excel操作模块,其具有如下的优点:
1、它具备几乎全部的Excel写入操作功能,这一点其他模块是达不到的。
2、它生成的Excel文件基本与Excel生成的文件一样。
3、它速度快,即使输出大的Excel文件,其内存占用也很小。
备注:XLsxWriter只支持Excel文件的写入,并不支持打开或者修改现有的Excel文件,且其只支持后缀为.xlsx文件,不支持后缀为.xls文件。
一、XLsxWriter模块的安装及升级
如果自身Python没有XLsxWriter模块,则需要安装,可以使用命令行或者编译器进行升级,输入以下代码即可:
pipinstallxlsxwriter注意全部小写
二、XLsxWriter模块创建Excel文件4步法
2.1、Workbook("filename"):创建Excel文件
此函数为创建一个Excel文件对象,filename为文件的名称及存储路径,可以利用此对象创建Excel工作表,其代码如下:
importxlsxwriterasxw创建Excel文件
2.2、add_workbook("filename"):创建Excel工作表
此函数为创建一张Excel工作表,filename为工作表的名称,如果不指定,则为默认的sheet1,可以利用这个对象往工作表里添加数据,其代码如下:
sheet1=_workbook()创建工作表sheet1sheel2=_workbook("基本数据")创建工作表sheet32.3、write(row,col,*args):向Excel工作表写入数据
此函数为向Excel工作表写入数据,row为行的索引,col为列的索引(索引从0开始),*args为写入的内容,格式等,其代码如下:
向0行0列(即A1)写入hello向A1单元格(即0行0列)写入hello
此时本地还没有Excel文件,需要使用close()函数关闭后,才在本地生成Excel文件。
备注:write()函数如果写入成功,返回一个数字:0,可以据此判断是否写入成功。
2.4、close():关闭Excel文件,即为保存。
close()函数为关闭Excel文件,可以理解为保存,当我们做完所有的操作后,代码最后需要使用(),方能在本地保存所创建的Excel文件,其相当于xlwt模块的save()函数,其代码如下:
()导入模块wb=("file/数据统计.xlsx")创建Excel工作表,不写名称则为sheet1cell_format=_format({'bold':True,设置字体为黑体'font_size':20,设置字体水平居中'valign':'vcenter',设置单元格背景色为绿色'border':1写入单元格()导入模块wb=("file/数据统计.xlsx")创建Excel工作表,不写名称则为sheet1cell_format=_format()设置字体为粗体cell__font_name("黑体")设置字号为20cell__align("center")设置字体垂直居中cell__bg_color("yellow")设置单元格边框为2("A2","ILovePython",cell_format)保存执行结果:

3.2、write_rich_string():写入多种样式的字符串
如果我们想在单元格中写入多种样式的字符串,可以使用write_rich_string()这个方法,比如不同颜色,不同字体,不同大小等,如:
importxlsxwriterasxw注意xlsxwriter模块只能操作后缀为.xlsx的Excel文件sheet1=_worksheet()设置字体格式1'font_size':12,'font_color':'blue','bold':True})font2=_format({写入单元格()导入模块wb=("file/xw/设置行高和列宽.xlsx")创建Excel工作表,不写名称则为_row(0,30,_format({'bg_color':'yellow'}))设置列宽("A1","hello,Ilovepython")保存执行结果:

说明:
1、如果想设置行的样式不改变行高,height可设置为None或者15(Excel默认行高值。)
2、如果想设置1列,可以用first_col=last_col,即开始列和结束列一样即可。
3、还有两个方法set_row_pixels和set_column_pixels(),功能与set_row()和set_column()一样,只是前者是以字符为单位的,而后者是以像素为单位的。
3.4、merge_range():合并单元格
我们操作Excel表格时,经常会合并单元格,在XLsxWriter也可以合并单元格,使用merge_range(first_row,first_col,last_row,last_col,data[,cell_format])方法即可,其中:
first_row:开始行
first_col:开始列
last_row:结束行
last_col:结束列
data:需要写入的数据
cell_format:合并后单元格样式
importxlsxwriterasxw注意xlsxwriter模块只能操作后缀为.xlsx的Excel文件sheet1=_worksheet()方法一_range(2,1,3,3,"合并单元格一",_format({'bg_color':'yellow',"align":"center","valign":"vcenter","border":2}))bbddee',"align":"center","valign":"vcenter","border":2}))()导入模块wb=("file/xw/插入图片.xlsx")创建Excel工作表,不写名称则为sheet1x方向位移'y_offset':0,x方向缩放'y_scale':0.5,对象位置,1-随单元格移动和大小而变,2-随单元格移动而移动,不随大小改变而改变,3-不随单元格移动和大小而变,4-与1小腿,但插入图片后隐藏单元格'image_data':None,图片超链接'description':"thisisaimage",图片装饰}_image(2,1,"file/",image_format)保存执行结果:

3.6、insert_chart(row,col,chart[,options]):插入图表
除了插入图片外,XLsxWriters模块还可以插入图表,使用insert_chart()方法即可实现,如:
importxlsxwriterasxw注意xlsxwriter模块只能操作后缀为.xlsx的Excel文件sheet1=_worksheet()设置图表类型:柱状图写入表格数据_column('A1',data[0])_column('B1',data[1])_column('C1',data[2])插入图表_chart('A7',chart)()导入模块wb=("file/xw/数据筛选.xlsx")创建Excel工作表,不写名称则为sheet1data=[['Apples',10000,5000,8000,6000],['Pears',2000,3000,4000,6000],['Bananas',6000,6000,6500,6000],['Oranges',500,300,200,700]]_table('B3:F7',{'data':data,'columns':[{'header':'Product'},{'header':'Dollar1'},{'header':'Dollar2'},{'header':'Dollar3'},{'header':'Dollar4'},{'header':'Year','formula':'=SUM(Sheet1[@Dollar1]:[Dollar4])'}]})()导入模块wb=("file/xw/数据验证.xlsx")创建Excel工作表,不写名称则为_validation('B2',{'validate':'integer',验证方式'minimum':1,最大值})_row('A1',['数据说明','数值'])保存执行结果:

3.9、add_sparkline(row,col,options):插入迷你图表
XLsxWriter模块可以用add_sparkline()方法插入迷你图表,如:
importxlsxwriterasxw注意xlsxwriter模块只能操作后缀为.xlsx的Excel文件sheet1=_worksheet()写入表格数据_row('A1',data[0])_row('A2',data[1])_row('A3',data[2])柱状图_sparkline('F2',{'range':'A2:E2','type':'column','style':12})保存执行结果:

3.10、write_comment(row,col,comment[,options]):单元格注释
在XLsxWriter模块中,单元格注释使用write_comment()方法,如:
importxlsxwriterasxw注意xlsxwriter模块只能操作后缀为.xlsx的Excel文件sheet1=_worksheet()保存
执行结果:

以上即为XLsxWriter模块的一些简单介绍,可以说XLsxWriter模块是最接近Excel表格操作的,Excel表格能做的,它基本都可以做,当然还有很多的功能,感兴趣的朋友可以自己去研究。