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在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
Python通过调用有道翻译api实现翻译功能示例
Jul 19 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python一键去抖音视频水印工具
Sep 14 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
python Pillow图像处理方法汇总
Oct 16 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
Python selenium实现断言3种方法解析
Sep 08 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类Class的概念
2012/06/14 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
详解Vue方法与事件
2017/03/09 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Python列表操作方法详解
2020/02/09 Python
钳工实习自我鉴定
2013/09/19 职场文书
党性分析自查总结
2014/10/14 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis