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中的控制流语句的知识点
Apr 14 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
git进行版本控制心得详谈
Dec 10 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
Python多线程 Queue 模块常见用法
Jul 04 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
List Installed Hot Fixes
2007/06/12 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现字符串格式化的方法小结
2017/02/20 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
PHP如何设置和取得Cookie值
2015/06/30 面试题
实习生求职自荐信
2014/02/07 职场文书
会计学毕业生求职信
2014/06/25 职场文书
员工保密协议书
2014/09/27 职场文书
师德师风整改措施
2014/10/24 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android