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妹子图简单爬虫实例
Jul 07 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
python交互式图形编程实例(三)
Nov 17 Python
python读取文本绘制动态速度曲线
Jun 21 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
python实现对变位词的判断方法
Apr 05 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
Python获取指定网段正在使用的IP
Dec 14 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设计模式之简单工厂模式详解
2014/09/04 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
JavaScript 学习初步 入门教程
2010/03/25 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python3.4中清屏的处理方法
2020/07/06 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
新学期开学寄语
2014/01/18 职场文书
医院工作检讨书范文
2014/02/10 职场文书
初二学习计划书范文
2014/04/27 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
技能比武方案
2014/05/21 职场文书
go xorm框架的使用
2021/05/22 Golang
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android