day08 代码操作xls文件
01 xls文件读操作
import xlrd
- 打开excel文件获取工作簿对象
wb = xlrd.open_workbook('files/data1.xls')
- 获取所有工作表的表名
names = wb.sheet_names()
3.获取工作表
# 工作簿对象.sheet_by_name(表名) - 获取指定表名对应的工作表
# 工作簿对象.sheet_by_index(下标) - 获取指定下标对应的工作表
4.获取表的行数和列数(有数据部分的行和列)
print(sheet1.nrows)
print(sheet1.ncols)
5.按行或者按列获取数据
# 工作表.row_values(行下标) - 获取指定行所有的数据
# 工作表.col_values(列下标) - 获取指定列所有的数据
# 工作表.row_values(行下标, 开始列下标, 结束列下标) - 获取指定行中指定范围的数据
# 工作表.col_values(列下标, 开始行下标, 结束行下标) - 获取指定列中指定范围的数据
6.获取指定单元格中的数据
# 工作表.cell_value(行下标, 列下标)
02 xls文件读操作练习
import xlrd
wb = xlrd.open_workbook('files/data1.xls')
stu_sheet = wb.sheet_by_name('students')
1.获取行数量
num_row = stu_sheet.nrows
2.每一行对应一个小列表
datas = []
for index in range(1, num_row):
line = stu_sheet.row_values(index)
datas.append(line)
3.每一行对应一个小字典
datas = []
keys = stu_sheet.row_values(0)
# print(keys)
for index in range(1, num_row):
line = stu_sheet.row_values(index)
stu = {}
for x in range(len(keys)):
key = keys[x]
value = line[x]
stu[key] = value
datas.append(stu)
03 xls修改单元格样式
import xlwt
wb = xlwt.Workbook()
sheet = wb.add_sheet('样式')
1.设置单元格的样式
1)创建样式对象
style1 = xlwt.XFStyle()
2)添加字体样式
font1 = xlwt.Font()
font1.name = '黑体'
font1.bold = True
font1.height = 20*20
font1.colour_index = 12
style1.font = font1
3)添加边框样式
b1 = xlwt.Borders()
b1.bottom = 10
b1.bottom_colour = 16
style1.borders = b1
4)添加对齐样式
style2 = xlwt.XFStyle()
al1 = xlwt.Alignment()
al1.vert = xlwt.Alignment.VERT_CENTER
al1.horz = xlwt.Alignment.HORZ_CENTER
al1.rota = 90
style2.alignment = al1
5)添加填充样式
p1 = xlwt.Pattern()
p1.pattern = xlwt.Pattern.SOLID_PATTERN
p1.pattern_fore_colour = 13
style1.pattern = p1
sheet.write(0, 0, '名字', style=style1)
sheet.write(2, 3, '对齐格式', style=style2)
6)合并单元格
# 工作表.write_merge(行下标1, 行下标2, 列下标1,列下标2, 数据, 样式)
sheet.write_merge(8, 8, 2, 6, 'hello', style1)
sheet.write_merge(12, 22, 2, 7, 'hello', style2)
7)设置列的宽度和行的高度
# 1)设置列的宽度
sheet.col(0).width = 30*256
# 2)设置行的高度
# 运行指定的行可以设置高度
sheet.row(0).height_mismatch = True
# 设置行的高度
sheet.row(0).height = 30*60
wb.save('files/example2.xls')
04 xls文件设置单元格样式
import xlwt
注意:xlwt设置样式的时候,如果需要颜色值(字体颜色、填充颜色、边框颜色),
颜色值只能使用xlwt.Style.colour_map中提供的颜色值
print(xlwt.Style.colour_map)
{'aqua': 49, 'black': 8, 'blue': 12, 'blue_gray': 54, 'blue_grey': 54,
'bright_green': 11, 'brown': 60, 'coral': 29, 'cyan_ega': 15, 'dark_blue': 18,
'dark_blue_ega': 18, 'dark_green': 58, 'dark_green_ega': 17, 'dark_purple': 28,
'dark_red': 16, 'dark_red_ega': 16, 'dark_teal': 56, 'dark_yellow': 19, 'gold': 51,
'gray_ega': 23, 'grey_ega': 23, 'gray25': 22, 'grey25': 22, 'gray40': 55, 'grey40': 55,
'gray50': 23, 'grey50': 23, 'gray80': 63, 'grey80': 63, 'green': 17, 'ice_blue': 31,
'indigo': 62, 'ivory': 26, 'lavender': 46, 'light_blue': 48, 'light_green': 42,
'light_orange': 52, 'light_turquoise': 41, 'light_yellow': 43, 'lime': 50,
'magenta_ega': 14, 'ocean_blue': 30, 'olive_ega': 19, 'olive_green': 59,
'orange': 53, 'pale_blue': 44, 'periwinkle': 24, 'pink': 14, 'plum': 61,
'purple_ega': 20, 'red': 10, 'rose': 45, 'sea_green': 57, 'silver_ega': 22,
'sky_blue': 40, 'tan': 47, 'teal': 21, 'teal_ega': 21, 'turquoise': 15,
'violet': 20, 'white': 9, 'yellow': 13}
字体相关样式:
1.创建样式对象
style1 = xlwt.XFStyle()
2.创建字体对象
font1 = xlwt.Font()
3.将字体对象关联到样式对象中
style1.font = font1
4.设置字体相关属性
font1.name = '宋体' # 设置字体名称
font1.height = 20*20 # 设置字体大小
font1.colour_index = 28 # 设置字体颜色
font1.bold = True # 是否加粗
font1.italic = True # 是否倾斜
5.写入数据的时候添加样式
sheet.write(1, 0, '苹果', style1)
填充相关样式:
1.创建样式对象
style2 = xlwt.XFStyle()
2.创建填充对象
pattern1 = xlwt.Pattern()
3.将填充对象关联到样式对象中
style2.pattern = pattern1
4.设置填充属性
pattern1.pattern = xlwt.Pattern.SOLID_PATTERN # 设置填充模式
pattern1.pattern_fore_colour = 52 # 设置填充颜色
5.写入数据的时候添加样式
sheet.write(1, 1, '猕猴桃', style2)
设置行高和列宽度:
1.设置列宽度
sheet.col(0).width = 50 * 256
2.设置行高
# 1) 允许设置某一行的高度
sheet.row(2).height_mismatch = True
# 2) 设置指定行的高度
sheet.row(2).height = 40*60
wb.save('files/data4.xls')