利用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,不然会出现不可预期的错误;
  • 简单套用写入保存,是不会套用格式的,只会按默认的格式保存文档,所以要手动设置格式;
  • 步骤是:
  1. 打开模板文件
  2. 复制模板文件
  3. 设置格式
  4. 设置字体
  5. 设置边框
  6. 设置对齐
  7. 写入并保存文件

 

posted @ 2020-09-26 19:37  、一叶孤城  阅读(689)  评论(0编辑  收藏  举报