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 while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
python实现k-means聚类算法
Feb 23 Python
python中subprocess批量执行linux命令
Apr 27 Python
python traceback捕获并打印异常的方法
Aug 31 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
Python中psutil的介绍与用法
May 02 Python
python tkinter组件使用详解
Sep 16 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 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实现获取FLV文件的时间
2015/02/10 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
python获得文件创建时间和修改时间的方法
2015/06/30 Python
python语言使用技巧分享
2016/05/31 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
python selenium 获取接口数据的实现
2020/12/07 Python
计算机大学生的自我评价
2013/10/15 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
借款担保书范文
2014/05/13 职场文书
生产车间标语
2014/06/11 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
《风筝》教学反思
2016/02/23 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
python编程项目中线上问题排查与解决
2021/11/01 Python
mysql中整数数据类型tinyint详解
2021/12/06 MySQL