一、Excel设置样式
1.1、常用方法与属性
函数名&属性 | 含义 |
---|---|
xlwt.Font() | 创建字体样式 |
font.name | 设置字体类型 |
font.colour_index | 设置字体颜色 |
font.height | 设置字体大小 |
font.bold | 设置字体是否为加粗 |
font.underline | 设置字体下划线 |
font.italic | 设置字体斜体 |
xlwt.Alignment() | 创建字体位置样式 |
alignment.horz | 设置字体横向位置 #1左 2中 3右 |
alignment.vert | 设置字体纵向位置 #0上 1中 2下 |
row.height_mismatch | 设置是否开启行高设置 True为开启 |
row.height | 设置单元格行高,值为256*像素点 |
col.width | 设置单元格宽度,值为256*像素点 |
xlwt.Borders() | 创建边框样式 |
border.left | 设置左边框粗细 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7 |
border.right | 设置右边框粗细 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7 |
border.top | 设置上边框粗细 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7 |
border.bottom | 设置下边框粗细 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7 |
border.left_colour | 设置左边框颜色 |
border.right_colour | 设置右边框颜色 |
border.top_colour | 设置上边框颜色 |
border.bottom_colour | 设置下边框颜色 |
xlwt.Pattern() | 创建背景颜色样式 |
pattern.pattern | 设置背景样式 |
xlwt.XFStyle() | 设置总样式对象,用于应用到单元格 |
xlwt.easyxf() | 设置总样式对象 |
1.2、代码
1.2.1、字体
import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
ft = xlwt.Font()
ft.name = '微软雅黑' # 设置字体
ft.height = 30*20 # 设置字体大小
ft.bold = True # 设置字体加粗
ft.underline = True # 设置字体下划线
ft.italic = True # 设置字体斜体
ft.colour_index = 2 # 设置字体颜色
# 创建一个样式对象
style1 = xlwt.XFStyle()
style1.font = ft
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/03_excel样式.xlsx')
1.2.2、边框
import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
boder = xlwt.Borders()
# 线的种类
# 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
boder.top = 1
boder.bottom = 6
boder.left = 4
boder.right = 5
# 线的颜色
boder.top_colour = 3
boder.bottom_colour = 4
boder.left_colour = 7
boder.right_colour = 6
# 创建一个样式对象
style1 = xlwt.XFStyle()
style1.borders = boder
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/04_excel样式_边框.xlsx')
1.2.3、内容位置
import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
align = xlwt.Alignment()
# 设置 上下位置 0 上 1 中 2 下
align.vert = 1
# 设置 左右位置 1左 2中 3右
align.horz = 2
# 设置单元格大小
# 如果要设置单元格高度,需要开启设置高度属性
ws.row(2).height_mismatch= True # 开启设置高度权限
ws.row(2).height = 50 *256
ws.col(2).width = 50 * 50
# 创建一个样式对象
style1 = xlwt.XFStyle()
style1.alignment = align
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/05_excel样式_内容位置.xlsx')
1.2.4、背景颜色
import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 实心颜色
pattern.pattern_fore_colour = 6
# 创建一个样式对象
style1 = xlwt.XFStyle()
style1.pattern = pattern
# 通过easyxf()设置样式
style2 = xlwt.easyxf('font:bold on,colour_index 5;align: vert center,horiz center')
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
ws.write(3,3,'吕小布',style2)
# 保存数据
wb.save('./create_data/06_excel样式_背景颜色.xlsx')
二、Excel数据汇总
数据汇总是Excel中常用的功能,而在Python中使用通过遍历所有单元格即可实现
2.1、代码
import xlrd
from xlutils.copy import copy
def read_data():
wb = xlrd.open_workbook('./base_data/data01.xlsx')
sh = wb.sheet_by_index(0)
fen_type = {} # {a:110,b:300}
count_price = [] # [1,2,3,4,5,6]
for r in range(sh.nrows):
count = sh.cell_value(r,3) * sh.cell_value(r,4)
count_price.append(count)
key = sh.cell_value(r,0)
if fen_type.get(key):
fen_type[key] += count
else:
fen_type[key] = count
return fen_type,count_price # 各分类的总价值, 每个单品的总价值
def save(fen,count):
wb = xlrd.open_workbook('./base_data/data01.xlsx')
sh_t = wb.sheet_by_index(0)
wb2 = copy(wb)
sh = wb2.get_sheet(0)
for r in range(sh_t.nrows):
sh.write(r,sh_t.ncols,count[r])
sh2 = wb2.add_sheet('汇总的数据')
for i,key in enumerate(fen.keys()):
sh2.write(i,0,key)
sh2.write(i,1,fen.get(key))
wb2.save('./create_data/05_汇总数据.xlsx')
if __name__ == "__main__":
f,c = read_data()
save(f,c)
问题
xlrd.biffh.XLRDError: Excel xlsx file; not supported
解决方案:
更换版本
pip uninstall xlrd
pip install xlrd==1.2.0