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数据结构之Array用法实例
Oct 09 Python
在Python中使用正则表达式的方法
Aug 13 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
pybind11在Windows下的使用教程
Jul 04 Python
python numpy数组复制使用实例解析
Jan 10 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
pycharm 的Structure界面设置操作
Feb 05 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缓存类代码(附详细说明)
2011/06/09 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP 验证登陆类分享
2015/03/13 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
Vue 进阶之路(三)
2019/04/18 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
Python存取XML的常见方法实例分析
2017/03/21 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
基于python实现文件加密功能
2020/01/06 Python
社区母亲节活动方案
2014/03/05 职场文书
老师对学生的评语
2014/04/18 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
高二英语教学反思
2016/03/03 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server