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 列表(List)操作方法详解
Mar 11 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
Django后台admin的使用详解
Jul 08 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
python字符串替换re.sub()方法解析
Sep 18 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
python单例模式的应用场景实例讲解
Feb 24 Python
Python Pandas 删除列操作
Mar 16 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
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
jquery自定义表格样式
2015/11/23 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
解决python对齐错误的方法
2020/07/16 Python
是否有自动比较结构的方法
2015/06/03 面试题
2019史上最全Database工程师题库
2015/12/06 面试题
应届大学生求职的自我评价
2013/11/17 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
维稳工作承诺书
2015/01/20 职场文书
青岛导游词
2015/02/12 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫