利用xlutils第三方库复制excel模板
Python之利用第三方库套用excel模板,模板的样子假设如下:
现在要用这个模板,并且在“第二行第二列”的下方填入内容:
#!usr/bin/python3 # -*-coding=utf-8 -*- from xlutils.copy import copy #注意xlutils所用格式是xls import xlrd import xlwt #找到要套用的excel模板并且用xlrd打开,formatting_info=True表示照搬格式; tem_excel = xlrd.open_workbook("template.xls", formatting_info=True); #这里的formatting_info=True必须使用xls格式,而且是正规的xls格式,不是拿个xlsx文件改成xls. #找到需要的工作表,以索引的方式 tem_sheet = tem_excel.sheet_by_index(0) #新建一个工作簿,并拷贝前面打开的工作簿 new_excel = copy(tem_excel) #在新的工作簿里新建工作表 new_sheet = new_excel.get_sheet(0) #在新的工作表里写入内容,默认是是使用表格的初始格式,也就是不套用模板 new_sheet.write(2,1,12) #在表的第三行第二列写入数字12[打开表格会发现并没有套用格式] new_sheet.write(3,1,18) #在表的第四行第二列写入数字18[打开表格会发现并没有套用格式] new_sheet.write(4,1,19) #在表的第五航第二列写入数字19[打开表格会发现并没有套用格式] new_sheet.write(5,1,15) #在表的第六航第二列写入数字15[打开表格会发现并没有套用格式] new_excel.save('test.xls') #将工作簿保存到指定位置; ''' #鉴于上述写入并没有套用我们想要的格式,我们人工设置他们的格式. #新建样式开始 ''' style = xlwt.XFStyle() #初始化自定义格式,空样式 font = xlwt.Font() #初始化字体 font.name = "微软雅黑" #设置字体名称 font.bold = True #设置字体加粗 font.height = 360 #字体大小的高度是字号乘以20,这里设置的是18号字体 style.font = font #将字体样式添加到空样式style里 #新建边框样式 borders = xlwt.Borders() #初始化单元格边框 borders.top = xlwt.Borders.THIN #上,THIN代表是细线,也可以设置为粗线等样式 borders.bottom = xlwt.Borders.THIN #下 borders.left = xlwt.Borders.THIN #左 borders.right = xlwt.Borders.THIN #右 style.boders = borders #将边框样式添加到style样式 #新建对齐样式 alignment = xlwt.Alignment() #初始化对齐样式 alignment.horz = xlwt.Alignment.HORZ_CENTER #水平中心对齐 alignment.vert = xlwt.Alignment.VERT_CENTER #垂直中心对齐 style.alignment = alignment #将对齐样式添加到style样式 #开始写入数据到表格并附带样式 new_sheet.write(2,1,12,style); #将样式应用到单元格2,1,也就是第三行第二列,并附带样式style new_sheet.write(3,1,12,style); #将样式应用到单元格3,1,也就是第四行第二列,并附带样式style #保存数据 new_excel.save('20200926.xls');
样式效果如下:
有几点注意:
- 利用xlutils套用格式的时候,formatting_info = True前的文件格式一定是xls,不然会出现不可预期的错误;
- 简单套用写入保存,是不会套用格式的,只会按默认的格式保存文档,所以要手动设置格式;
- 步骤是:
- 打开模板文件
- 复制模板文件
- 设置格式
- 设置字体
- 设置边框
- 设置对齐
- 写入并保存文件