Python使用OpenPyXL处理Excel表格


Posted in Python onJuly 02, 2020

官方文档: http://openpyxl.readthedocs.io/en/default/

OpenPyXL库 --单元格样式设置

单元格样式的控制,依赖openpyxl.style包,其中定义有样式需要的对象,引入样式相关:

from openpyxl.styles import PatternFill, Font, Alignment, Border, SideBorder 边框 Side 边线PatternFill 填充Font 字体Aignment 对齐

以上基本可满足需要

基本用法是,将单元格对象的设置的属性赋为新的与默认不同的相应对象。

导入excel

from openpyxl import load_workbook
from openpyxl.styles import Border,Side
wb = load_workbook("模板.xlsx")#使用openpyxl读取xlsx文件,创建workbook
ws = wb.active
ws

<Worksheet "sheet1">

1、Border 边框 Side 边线

from openpyxl.styles import Border, Side
border_type=Side(border_style=None, color='FF000000')
border = Border(left=border_type,
        right=border_type,
        top=border_type,
        bottom=border_type,
        diagonal=border_type,
        diagonal_direction=0,
        outline=border_type,
        vertical=border_type,
        horizontal=border_type
)

border_style的样式有:

‘dashDot',‘dashDotDot',‘dashed',‘dotted',‘double',
‘hair',‘medium',‘mediumDashDot',‘mediumDashDotDot',
‘mediumDashed',‘slantDashDot',‘thick',‘thin'

举例,原excel

Python使用OpenPyXL处理Excel表格

# 样式1 - 窄边框,黑色
thin = Side(border_style="thin", color="000000")#边框样式,颜色
border = Border(left=thin, right=thin, top=thin, bottom=thin)#边框的位置

ws['A3'].border = border #A3单元格设置边框

for row in ws['A5:D6']:
  for cell in row:
    cell.border = border#A5:D6区域单元格设置边框
wb.save("test.xlsx")

效果:

Python使用OpenPyXL处理Excel表格

# 样式2- 宽边框,蓝色
thin = Side(border_style="thick", color="0000FF")#边框样式,颜色
border = Border(left=thin, right=thin, top=thin, bottom=thin)#边框的位置

ws['A3'].border = border #A3单元格设置边框

for row in ws['A5:D6']:
  for cell in row:
    cell.border = border#A5:D6区域单元格设置边框
wb.save("test.xlsx")

效果:

Python使用OpenPyXL处理Excel表格

2、字体设置

from openpyxl.styles import Font
font = Font(name='Calibri',
      size=11,
      color='FF000000',
      bold=False,
      italic=False,
      vertAlign=None,
      underline='none',
      strike=False)

字体名称、字体大小、字体颜色、加粗、斜体、纵向对齐方式(有三种:baseline,superscript, subscript)、下划线、删除线,字体颜色可以用RGB 或 aRGB ,

font = Font(size=14, bold=True, name='微软雅黑', color="FF0000")#字体大小,加粗,字体名称,字体名字
ws['A3']="欢迎关注:永恒君的百宝箱"
ws['A3'].font = font
wb.save("test.xlsx")

Python使用OpenPyXL处理Excel表格

3、填充

from openpyxl.styles import PatternFill
# fill_type 的样式为 None 或 solid
fill = PatternFill(fill_type = None,start_color='FFFFFF',end_color='000000')

fill_type类型

有:'none'、'solid'、'darkDown'、'darkGray'、'darkGrid'、'darkHorizontal'、'darkTrellis'、'darkUp'、'darkVertical'、'gray0625'、
'gray125'、'lightDown'、'lightGray'、'lightGrid'、'lightHorizontal'、
'lightTrellis'、'lightUp'、'lightVertical'、'mediumGray'

官方文档中写明,fill_type若没有特别指定类型,则后续的参数都无效

所以上述代码就会出问题,start_color代表前景色,end_color是背景色,之所以设置两个参数是为了方便样式颜色的填充和渐变色的显示(个人认为)

如果想要纯色填充的话可以用'solid',然后令前景色为你需要的颜色即可,即:

fill = PatternFill(fill_type = None,start_color='FF0000')
fill = PatternFill(patternType="solid", start_color="33CCFF")#纯色填充
ws['A3']="欢迎关注:永恒君的百宝箱"
ws['A3'].fill = fill
wb.save("test.xlsx")

Python使用OpenPyXL处理Excel表格

4、对齐

from openpyxl.styles import Alignment
align = Alignment(horizontal='left',vertical='center',wrap_text=True)

horizontal代表水平方向,可以左对齐left,还有居中center和右对齐right,分散对齐distributed,跨列居中centerContinuous,两端对齐justify,填充fill,常规general

vertical代表垂直方向,可以居中center,还可以靠上top,靠下bottom,两端对齐justify,分散对齐distributed

自动换行:wrap_text,这是个布尔类型的参数,这个参数还可以写作wrapText

align = Alignment(horizontal='right',vertical='center',wrap_text=True)#纯色填充
ws['A3']="永恒君的百宝箱"
ws['A3'].alignment = align
wb.save("test.xlsx")

Python使用OpenPyXL处理Excel表格

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
Python模拟登陆实现代码
Jun 14 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Django中信号signals的简单使用方法
Jul 04 Python
Python线程障碍对象Barrier原理详解
Dec 02 Python
如何基于Python实现自动扫雷
Jan 06 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
Python socket服务常用操作代码实例
Jun 22 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
Python - 10行代码集2000张美女图
May 23 Python
python使用BeautifulSoup 解析HTML
Apr 24 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 #Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 #Python
如何基于Python爬取隐秘的角落评论
Jul 02 #Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 #Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 #Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 #Python
python脚本和网页有何区别
Jul 02 #Python
You might like
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
window下eclipse安装python插件教程
2017/04/24 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
python三大神器之fabric使用教程
2019/06/10 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
酒店销售主管岗位职责
2014/01/04 职场文书
优秀教师先进事迹
2014/01/22 职场文书
CAD实训总结范文
2015/08/03 职场文书
python单元测试之pytest的使用
2021/06/07 Python
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
Go获取两个时区的时间差
2022/04/20 Golang