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 13 Python
python访问系统环境变量的方法
Apr 29 Python
flask框架中勾子函数的使用详解
Aug 01 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python实现图片转字符小工具
Apr 30 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
python访问hdfs的操作
Jun 06 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
详解Django中异步任务之django-celery
Nov 05 Python
python3中编码获取网页的实例方法
Nov 16 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/04/27 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
廉洁使者实施方案
2014/03/29 职场文书
赔偿协议书范本
2014/04/15 职场文书
教师考察材料范文
2014/06/03 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
普通党员整改措施
2014/10/24 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
暑假打工感想
2015/08/07 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS