Python之Excel自动化处理(二)

一、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、字体
python 复制代码
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、边框
python 复制代码
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、内容位置
python 复制代码
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、背景颜色
python 复制代码
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、代码

python 复制代码
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

相关推荐
q***465220 分钟前
若依部署Nginx和Tomcat
运维·nginx·tomcat
行初心1 小时前
uos基础 dmesg 查看内核的实时日志
运维
行初心1 小时前
uos基础 journalctl 查看系统的实时日志
运维
行初心1 小时前
uos基础 ffmpeg 查看多媒体解码的配置信息
运维
路人甲ing..1 小时前
Ubuntu 怎么把树莓派内存卡备份制作成为镜像
linux·运维·ubuntu
QMY5205202 小时前
爬虫技术抓取网站数据的方法
运维·爬虫·自动化
zz-zjx2 小时前
docker进阶---docker底层实践2025
运维·docker·容器
Fanmeang3 小时前
华为SRv6技术:引领IP网络进入新时代的智能导航系统
运维·网络·华为·vpn·ipv6·srv6
梦想的初衷~3 小时前
Plaxis自动化建模与Python应用全解:从环境搭建到高级案例实战
python·自动化·工程设计·工程软件
我科绝伦(Huanhuan Zhou)3 小时前
【免费】MySQL自动化巡检工具,一键生成WORD巡检报告
运维·mysql·自动化