xlwt
1.安装
pip install xlwt
2.简单使用
import xlwt
#创建excel工作薄
myWorkbook=xlwt.Workbook()
#添加Excel工作表
mySheet=myWorkbook.add_sheet("worklogTask1")
#写入数据
myStyle=xlwt.easyxf('font: name Times New Roman, color-index red, bold on', num_format_str='#,##0.00') #数据格式
mySheet.write(1,1,1234.56,myStyle)
mySheet.write(2,0,1)
mySheet.write(2,1,1)
mySheet.write(2,2,xlwt.Formula("A3+B3"))
myWorkbook.save("excelFile.xls")
3.Workbook属性
例子—设置国家代码
'''
设置国家码
'''
import xlwt
myWorkbook = xlwt.Workbook(encoding='utf-8')
myWorkbook.country_code = 86
ws = myWorkbook.add_sheet('CN')
myWorkbook.save('country.xls')
4.代码实列
#导入模块
import xlwt
# 创建excel工作薄
myWorkbook = xlwt.Workbook()
# 添加Excel工作表
mySheet = myWorkbook.add_sheet("班级1")
# 写入字段名
headers = ['学生','语文','英语','数学']
student_scores = [
('王五',98,78,67),
('张三',56,76,32),
('李四',78,34,98)
]
# 通过列写入内容
for cols, header in enumerate(headers):
mySheet.write(0, cols, header)
# 通过行写入内容
for row, scores in enumerate(student_scores):
for cols, score in enumerate(scores):
mySheet.write(row+1, cols, score)
myWorkbook.save("成绩表1.xls")
5.给excel设置样式
(1). 创建一个表,得到一个worksheet对象
import xlwt
myWorkbook = xlwt.Workbook(encoding='utf-8')
myWorksheet = myWorkbook.add_sheet('sheet1')
print(type(myWorksheet)) # <class 'xlwt.Worksheet.Worksheet'>
(2). 设置列宽,cols_num是列的数目
# 设置列宽,cols_num是列的数目,可以通过修改10这个值,修改列的宽度
# width = 256 * 10 256为衡量单位,20表示20个字符宽度
cols_num = 10
for c in range(cols_num): # 10为cols_num长度
myWorksheet.col(c).width = 256 * 10
(3). 设置行高
# 设置行高
myWorksheet.row(0).height_mismatch = True # 设置为True,修改行高才生效
myWorksheet.row(0).height = 500 # 设置行高
(4). 设置excel单元格风格
# 设置excel单元格风格
def body_style(pattern=None):
style = xlwt.XFStyle() # Create Style
# 设置字体样式
font = xlwt.Font() # Create Font
font.name = "SimSun" # 宋体
font.height = 20 * 12 # 字体大小
# 设置单元格样式
style.alignment.vert = style.alignment.VERT_BOTTOM # 垂直居中
style.alignment.horz = style.alignment.HORZ_CENTER # 水平居中
style.alignment.wrap = style.alignment.WRAP_AT_RIGHT # 自动换行
# 设置单元格背景
if pattern:
pattern = xlwt.Pattern() # Create Pattern
pattern.pattern = pattern.SOLID_PATTERN # 设置背景颜色
pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
pattern.pattern_back_colour = 4
style.pattern = pattern
# 设置边框样式
borders = xlwt.Borders() # Pattern Borders
borders.right = borders.NO_LINE # 默认没有边框,NO_LINE
borders.top = borders.THIN # 薄边框
borders.bottom = borders.MEDIUM # 虚线边框
borders.left = borders.THICK # 厚边框
borders.left_colour = 0x90 # 边框上色
borders.right_colour = 0x90
borders.top_colour = 0x90
borders.bottom_colour = 0x90
style.font = font # 样式赋值
style.borders = borders
return style
cell_styles = body_style()
(5). 往单元格内写入数据
headers = ['学生','语文','英语','数学']
for cols, header in enumerate(headers):
myWorksheet.write(0, cols, header, style=cell_styles)
wwb.save('有样式的excel.xls') # 将wSheet内容保存到本地
6. 补充
# coding=utf-8
import xlwt
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
for i in range(0, 128):
stylei = xlwt.XFStyle()
patterni = xlwt.Pattern()
patterni.pattern = 1
# 设置底纹的图案索引,1为实心,2为50%灰色,对应为excel文件单元格格式中填充中的图案样式
patterni.pattern_fore_colour = i # 设置底纹的前景色,对应为excel文件单元格格式中填充中的背景色
patterni.pattern_back_colour = 35 # 设置底纹的背景色,对应为excel文件单元格格式中填充中的图案颜色
stylei.pattern = patterni # 为样式设置图案
worksheet.write(i, 0, i, stylei)
workbook.save('file.xls')
在设置字体颜色或者单元格背景颜色的时候,可以使用源码中0x0D参数来代表不同的颜色,也可以用0-127来表示不同的颜色。
7.修改excel文件
6.1 简单操作步骤
- 读取源excel文件
- 在读取的sheet中通过put_cell()进行修改
- 重新创建一个excel文件,把读取到的数据写入到新文件中
6.2 代码实例
''''
目的:
1、获取学生成绩总分
2、获取科目成绩平均分
'''
import xlrd
import xlwt
myWorkbook = xlrd.open_workbook("成绩表.xlsx")
rsheet = myWorkbook.sheet_by_name('1班')
# 获得同学的总分
# 通过put_cell修改单元格,往标题栏增加 总分 字段
r_nrows = rsheet.nrows # 总行数
r_ncols = rsheet.ncols # 总列数
rsheet.put_cell(0, r_ncols,xlrd.XL_CELL_TEXT,'总分',None)
for row in range(1, r_nrows):
grades = rsheet.row_values(row, 1, r_ncols)
total = sum(grades) # 得到同学总分
rsheet.put_cell(row, 4, xlrd.XL_CELL_NUMBER,total,None) # 写入成绩到内存
# 得到科目平均分
rsheet.put_cell(rsheet.nrows, 0, xlrd.XL_CELL_TEXT,'平均分',None)
for col in range(1, r_ncols+1):
grades = rsheet.col_values(col, 1, r_nrows)
avg = sum(grades) / len(grades) # 得到平均分
rsheet.put_cell(r_nrows, col, xlrd.XL_CELL_NUMBER, avg, None) # 写入成绩到内存
# 创建excel工作薄,并将修改内容写入到新文件中
#
wwb = xlwt.Workbook()
wSheet = wwb.add_sheet("班级1",)
w_nrows = rsheet.nrows
w_ncols = rsheet.ncols
for row in range(0,w_nrows):
for cols in range(0,w_ncols):
wSheet.write(row, cols, rsheet.cell_value(row,cols)) # 从内存中获取成绩并写入wSheet中
wwb.save('abc.xls') # 将wSheet内容保存到本地
天道酬勤 循序渐进 技压群雄