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 实现堆排序算法代码
Jun 05 Python
Python使用asyncio包处理并发详解
Sep 09 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
python实现根据文件格式分类
Oct 31 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
python实现视频读取和转化图片
Dec 10 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
Python如何给你的程序做性能测试
Jul 29 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
Python基础之字符串格式化详解
Apr 21 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
webpack优化的深入理解
2018/12/10 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
Python基础之函数用法实例详解
2014/09/10 Python
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
详解Django 时间与时区设置问题
2019/07/23 Python
python生成特定分布数的实例
2019/12/05 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
百日安全活动总结
2014/05/04 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
高中化学教学反思
2016/02/22 职场文书