功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

前面介绍了一个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需要安装模块,可以使用命令线或编译器升级,输入以下代码:
   pip install xlsxwriter #注意所有小写
   另外,Python3内置安装本身XLsxWiter模块,如果版本太低,可以用命令线或编译器升级,输入以下代码:
   pip install --upgrade xlsxwriter # 注意全部小写
   二、XLsxWriter模块创建Excel文件4步法
   2.1、Workbook("filename"):创建 Excel 文件
   这个函数是创建 Excel 文件对象,filename对于文件的名称和存储路径,可以使用此对象创建 Excel 工作表代码如下:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/数据统计.xlsx") # 创建 Excel 文件
   2.2、add_workbook("filename"):创建 Excel 工作表
   这个函数是创建一个函数Excel工作表,filename如果没有指定工作表的名称,则为默认sheet1,将数据添加到工作表中,代码如下:
   sheet1 = wb.add_workbook() # 创建 Excel 工作表不写名字就是 sheet1
   注:若要创建多个工作表,可多次创建,如:
   shee1 = wb.add_workbook() # 创建工作表 sheet1 sheel2 = wb.add_workbook("基本数据") # 创建工作表 基本数据 sheet3 = wb.add_workbook() # 创建工作表 sheet3
   2.3、write(row,col,*args):向 Excel 将数据写入工作表
   这个函数是向 Excel 工作表写入数据,row 行为索引,col 列索引(索引从 0 开始),*args代码如下:
   # 方法一 sheet1.write(0,0,"hello") # 向 0 行 0 A1) 写入 hello # 方法二 sheet1.write(A1,"hello") # 向 A1 单元格(即 0 行 0 列)写入 hello
   当地还没有Excel需要使用的文件close()函数关闭后,在本地生成 Excel 文件 。
   备注:write() 如果函数写入成功,返回一个数字:0,可以判断是否写入成功 。
   2.4、close():关闭 Excel 文件,即保存 。
   close()函数是关闭 Excel 文件可以理解为保存 。当我们完成所有操作时,代码最终需要使用wb.close()只有在当地保存创建的 Excel 文件,相当于 xlwt 模块的 save() 函数,其代码如下:
   wb.close() # 关闭 Excel 文件,即保存
   执行结果:
   

功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   以上为 XLsxWriter 模块写入Excel只要按照以上四个步骤,就可以创建文件最基本的四个步骤Excel 表格 。至于字体、边框、颜色和背景,可以在第三步 write() 函数扩展 。
   三、XLsxWriter模块进阶用法
   3.1、add_format():设置单元格式样式
   这个函数是设置单元格式的两种方式:
   1、通过字典设置,如
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/数据统计.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 cell_format = wb.add_format({ 'bold' : True,# 设置字体为 粗体 font_name' : '黑体',# 黑体 font_size': 20,# 设置为 20 align' : 'center',# 设置字体 水平居中 valign' : 'vcenter',# 设置字体 垂直居中 bg_color' : 'green',# 单元格的背景色为 绿色 border' : 1 # 设置单元格边框为 1}sheet1.write("A1","I Love Python",cell_format) # 写入单元格 wb.close() # 保存
   执行效果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   2、如:
   除通过字典设置单元格式外,XLsxWriter 模块还为每种风格设置了相应的方法,如下表所示:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   以上只列出了字体的一些样式,还有很多,如对齐、边框、图案等,这里就不一一列举了,感兴趣的可以查阅官方文件 。
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/数据统计.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 cell_format = wb.add_format() # 创建单元格式对象 cell_format.set_bold(True) # 设置为 粗体 cell_format.set_font_name("黑体") # 黑体 cell_format.set_font_size(20) # 设置为 20 cell_format.set_align("center") # 在中间设置字体 cell_format.set_valign("vcenter") # 设置字体 垂直居中 cell_format.set_bg_color("yellow") # 单元格的背景色为 黄色cell_format.set_border(2) # 单元格边框设置 2 sheet1.write("A2","I Love Python",cell_format) # 写入单元格 wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.2、write_rich_string():写各种风格的字符串
   如果我们想在单元格中写样式的字符串,可以用 write_rich_string() 这种方法,如不同颜色、不同字体、不同如:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/数据统计.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 font1 = wb.add_format({ # 设置字体格式1 font_size':12,'font_color':'blue','bold':True }) font2 = wb.add_format({ #设置字体格式2 font_size':16,'font_color':'green','italic':True }) sheet1.write_rich_string("A1","这是字体 ",font1,"蓝色粗体","和 字体",font2,"绿色斜体") # 写入单元格 wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.3、设置行高和列宽
   XLsxWriter 模块设置行高和列宽相对简单set_row(row,height,cell_format,options) 和 set_column(first_col,last_col,width,cell_format,options),这两种方法都可以,包括 height 和 width 是行高和列宽,如:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/设置行高和列宽.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 sheet1.set_row(0,30,wb.add_format({'bg_color':'yel
low'})) # 设置行高 sheet1.set_column(0,3,50) # 设置列宽 sheet1.write("A1","hello,I love python") # 写入单元格 wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   说明:
   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:合并后的单元格式
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/合并单元格.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 # 方法一 sheet1.merge_range(2,1,3,3,"合并单元格一",wb.add_format({'bg_color':'yellow',"align":"center","valign":"vcenter","border":2})) # 方法二 sheet1.merge_range("B6:D8","合并单元格二",wb.add_format({'bg_color':'#bbddee',"align":"center","valign":"vcenter","border":2})) wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.5、insert_image(row,col,image_path[,options]):插入图片
   XLsxWriter 模块插入图片非常简单,支持 PNG,JPEG,GIF,BMP 等格式的插入不需要转换,使用 insert_image() 方法可实现图片插入 。
   【功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter】import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/插入图片.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 # 图片格式设置 image_format = { 'x_offset' : 0,# x 方向位移 y_offset' : 0,# y 方向位移 x_scale' : 0.5,# x 方向缩放 y_scale' : 0.5,# y 方向缩放 boject_position' : 2,# 对象位置,1-随单元格的移动和大小而变化,2-随单元格移动而不随大小变化,3-不随单元格的移动和大小而变化,4-与1小腿,但插入图片后隐藏单元格 image_data' : None,# 图片数据信息 url' : 'http://www.baidu.com',# 图片超链接 description' : "this is a image",# 图片说明 decorative' : False # 图片装饰 }sheet1.insert_image(2,1,"file/test.jpg",image_format) # 插图片 wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.6、insert_chart(row,col,chart[,options]):插入图表
   除插入图片外,XLsxWriters 模块也可以插入图表,使用 insert_chart() 方法可以实现,如:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/插入图表.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 chart = wb.add_chart({'type' : 'column'}) # 设置图表类型:柱状图 # 设置图表数据 data = https://www.ykjsxy.net/shbaike/[1、2、3、4、5][2、4、6、7、10]# 写入表格数据 sheet1.write_column('A1',data[0]) sheet1.write_column('B1',data[1]) sheet1.write_column('C1',data[2]) # 创建图表 chart.add_series({'values' : '=Sheet1!$A$1:$A$5'}) chart.add_series({'values' : '=Sheet1!$B$1:$B$5'}) chart.add_series({'values' : '=Sheet1!$C$1:$C$5'}) # 插图表 sheet1.insert_chart('A7',chart) wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   注:图表的方法有很多,可以设置图表的属性,如类型、标题、x轴,y轴、背景、系列名称等,感兴趣的朋友可参考官方文件 。
   3.7、insert_table(first_row,first_col,last_row,last_col,data):插入数据筛选表
   insert_table()方法可向Excel插入可筛选数据的表格,如:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/数据筛选.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 data = https://www.ykjsxy.net/shbaike/[ ['Apples[Pears[Bananas6000,6000,6500,6000]Oranges sheet1.add_table('B3:F7',{'data' : data,'columns header' : 'Product'},{'header' : 'Dollar1'},{'header' : 'Dollar2'},{'header' : 'Dollar3'},{'header' : 'Dollar4'},{'header' : 'Year','formula' : '=SUM(Sheet1[@Dollar1]:[Dollar4]) ) wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.8、data_validation(first_row,first_col,last_row,last_col,options):数据验证
   在 XLsxWriter 可用于模块中data_validation() 方法限制单元格输入数据的范围,如:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/数据验证.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 sheet1.data_validation('B2',{'validate' : 'integer',# 验证类型 criteria' : 'between',# 验证方法 minimum' : 1,# 最小值 maximum' : 10 # 最大值 }sheet1.write_row('A1# 按行输入数据 sheet1.write('A2请输入1-10数据) wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.9、add_sparkline(row,col,options):插入迷你图表
   XLsxWriter 模块可用 add_sparkline() 插入迷你图表的方法,如:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/迷你图表.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 data = https://www.ykjsxy.net/shbaike/[ [-2,2,3,-1,0],[30、20、33、20、15]-1,-1,1,-1] ] # 写入表格数据 sheet1.write_row('A1',data[0]) sheet
1.write_row('A2',data[1]) sheet1.write_row('A3',data[2]) # 折线图,默认图表,可以省略 type sheet1.add_sparkline('F1',{'range':'A1:E1','type':'line','style':2,'markers':True }) # 柱状图 sheet1.add_sparkline('F2',{'range':'A2:E2','type':'column','style :12 }# 输赢图 sheet1.add_sparkline('F3',{'range':'A3:E3','type':'win_loss','negative_points':True }) wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   3.10、write_comment(row,col,comment[,options]):单元格注释
   在 XLsxWriter 在模块中注释使用 write_comment() 方法如下:
   import xlsxwriter as xw # 导入模块 wb = xw.Workbook("file/xw/单元格注释.xlsx") # 注意 xlsxwriter 模块只能操作后缀.xlsx的Excel文件 sheet1 = wb.add_worksheet() # 创建 Excel 工作表不写名字就是 sheet1 sheet1.write('A1','hello world') sheet1.write_comment('A1这是一个注释wb.close() # 保存
   执行结果:
   
功能最强Excel写入模块 Python写入Excel表格模块:XLsxWriter

文章插图
   以上即为 XLsxWriter 模块的一些简单介绍可以说 XLsxWriter 模块最接近Excel操作表格,Excel表格可以做,它基本上可以做,当然,有很多功能,感兴趣的朋友可以自己学习 。