1. python复制excel格式到新表,并写入数据:
import xlutils # xlutils 是将一个excel模板的格式复制到一个新建的工作薄中
import xlrd
import xlwt
from xlutils.copy import copy
tem_excel = xlrd.open_workbook('E:\练习excel\日统计.xlsx',formatting_info=True) #打开工作薄,formatting_info格式信息设为True
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)
new_sheet.write(3,1,28)
new_sheet.write(4,1,36)
new_sheet.write(5,1,55)
new_excel.save('E:\\练习excel\\填写.xls')
注意:报错NotImplementedError: formatting_info=True not yet implemented;在读取xlsx格式的Excel时,传入formatting_info会直接抛出异常,而读取xls类型的文件时不存在此问题。抛异常的原因是formatting_info还没有对新版本的xlsx的格式完成兼容。
解决办法:修改为xlsx为xls(推荐)
2.完整代码:
import xlutils # xlutils 是将一个excel模板的格式复制到一个新建的工作薄中
import xlrd
import xlwt
from xlutils.copy import copy
tem_excel = xlrd.open_workbook('E:/练习excel/日统计.xls', formatting_info=True) # 打开工作薄,formatting_info格式信息设为True
tem_sheet = tem_excel.sheet_by_index(0)
new_excel = copy(tem_excel)
new_sheet = new_excel.get_sheet(0)
# 这样直接写入会发现写入数据还是使用excel默认格式,需要人为设置格式
#new_sheet.write(2, 1, 12)
#new_sheet.write(3, 1, 28)
#new_sheet.write(4, 1, 36)
#new_sheet.write(5, 1, 55)
#new_excel.save('E:/练习excel/填写.xls')
#新建一个样式
style = xlwt.XFStyle() # 初始化一个空白样式
#设置字体
font = xlwt.Font() # 初始化一个字体
font.name = '宋体' # 字体名称
font.bold = True # 字体加粗
font.italic = True # 字体倾斜 没有italic属性的字体可以用oblique来进行倾斜设置
font.height = 220 #字体的大小:需要将excel中的字体大小11*20
style.font = font #将设置的字体加入到样式之中
#设置边框
borders = xlwt.Borders() # 初始化边框
borders.top = xlwt.Borders.THIN #设置上、下、左、右四条边框,用细线设置
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders #将边框添加到样式中
#设置对齐
alignment = xlwt.Alignment() #初始化对齐
alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平方向对齐,HORZ_CENTER水平居中
alignment.vert = xlwt.Alignment.VERT_CENTER # 垂直方向对齐,VERT_CENTER垂直居中
style.alignment = alignment #将对齐方式添加到样式中
new_sheet.write(2,1,12,style)
new_sheet.write(3,1,22,style)
new_sheet.write(4,1,38,style)
new_sheet.write(5,1,55,style)
new_excel.save('E:/练习excel/填写.xls')