示例
import os
import xlrd
import xlwt
from xlutils.copy import copy
if __name__ == "__main__":
path = r'D:\Fanjc\PythonProjects\处理xls示例'
templateName = '模板.xls'
name = '测试.xls'
templatePath = os.path.join(path,templateName)
workbookPath = os.path.join(path,name)
workbook = copy(xlrd.open_workbook(templatePath, formatting_info=True))
sheet = workbook.get_sheet(0)
sheet.write(9,0,'第10行第1列')
cellStyle = xlwt.XFStyle()
# 对齐
alLeft = xlwt.Alignment()
#左:0x01,中:0x02,右:0x03
alLeft.horz=0x02
#上:0x00,中:0x01,下:0x02
alLeft.vert=0x01
cellStyle.alignment=alLeft
sheet.write(9,1,'居中对齐',cellStyle)
# 字体字号
font = xlwt.Font()
font.name = '宋体'
font.height = 9*20
cellStyle.font = font
sheet.write(9,2,'宋体9号',cellStyle)
# 四边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN # DASHED虚线,NO_LINE没有,THIN实线
borders.bottom = xlwt.Borders.DASHED
borders.left = xlwt.Borders.NO_LINE
borders.right = xlwt.Borders.THIN
cellStyle.borders = borders
sheet.write(9,3,'上实下虚左无右实',cellStyle)
# 常规、保留2位小数、百分数
value = 10.12345678
cellNumFormatNormal = 'general'
cellStyle.num_format_str = cellNumFormatNormal
sheet.write(9,4,value,cellStyle)
cellNumFormatNum = "0.00"
cellStyle.num_format_str = cellNumFormatNum
sheet.write(9,5,value,cellStyle)
cellNumFormatPercent = "0.00%"
cellStyle.num_format_str = cellNumFormatPercent
sheet.write(9,6,value,cellStyle)
# 保存
workbook.save(workbookPath)
用到的库
xls相关:xlrd、xlwt、xlutils
xlutils实际只导入copy
from xlutils.copy import copy
通用(并非一定要用):os、shutil
os用于拼接路径
shutil用于复制文件
shutil.copy(原始表路径, 新表路径)
修改workbook内容
实际的做法是
- copy该Workbook内容(保留其格式)
workbook = copy(xlrd.open_workbook(workbook路径, formatting_info=True))
- 获取第1个sheet(一般都只使用第一个sheet保存数据)
sheet = workbook.get_sheet(0)
- 修改获取到的sheet的某个cell内容
sheet.write(行,列,内容,cellStyle)
行和列都是从0开始数
cellStyle:新创建一个XFStyle,修改相关参数,传入write.
- 保存新表
workbook.save(workbook路径)
修改cellStyle
创建一个Style
cellStyle = xlwt.XFStyle()
在write某cell的内容时,将cellStyle作为参数传入write方法,即可设置该cell的style为cellStyle。
修改内容
- 对齐
水平靠左对齐
alLeft = xlwt.Alignment()
alLeft.horz=0x01
alLeft.vert=0x01
cellStyle.alignment=alLeft
水平居中对齐
alCenter = xlwt.Alignment()
alCenter.horz=0x02
alCenter.vert=0x01
cellStyle.alignment=alCenter
水平靠右对齐
alRight = xlwt.Alignment()
alRight.horz=0x03
alRight.vert=0x01
cellStyle.alignment=alRight
- 字体字号
如:宋体9号
font = xlwt.Font()
font.name = '宋体'
font.height = 9*20
cellStyle.font = font
- 边框
如四边全实线
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN # DASHED虚线,NO_LINE没有,THIN实线
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
cellStyle.borders = borders
- 单元格数字格式
常规
cellNumFormatNormal = 'general'
cellStyle.num_format_str = cellNumFormatNormal
数值(保留2位小数)
cellNumFormatNum = "0.00"
cellStyle.num_format_str = cellNumFormatNum
百分比(保留2位小数)
cellNumFormatPercent = "0.00%"
cellStyle.num_format_str = cellNumFormatPercent
网友评论