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生成器的使用方法
Nov 21 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
Django实现文件上传下载功能
Oct 06 Python
Python关于反射的实例代码分享
Feb 20 Python
Django框架models使用group by详解
Mar 11 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
python 通过文件夹导入包的操作
Jun 01 Python
python3.x中安装web.py步骤方法
Jun 23 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模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP实现倒计时功能
2020/11/16 PHP
js压缩利器
2007/02/20 Javascript
filemanage功能中用到的common.js
2007/04/08 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
Python3读取文件常用方法实例分析
2015/05/22 Python
Python使用minidom读写xml的方法
2015/06/03 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python 字符串换行的多种方式
2018/09/06 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
工作会议欢迎词
2014/01/16 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
团队精神口号
2014/06/06 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
教师节班会开场白
2015/06/01 职场文书
在职证明格式样本
2015/06/15 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
利用Apache Common将java对象池化的问题
2022/06/16 Servers
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python