使用样式

简介

样式用于在屏幕上显示时更改数据的外观。它们还用于确定数字的格式。

样式可以应用于以下几个方面:

  • 字体设置字体大小、颜色、下划线等。
  • 填充以设置图案或颜色渐变
  • 边框在单元格上设置边框
  • 单元格排列
  • 保护

以下是默认值:

>>> from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
>>> font = Font(name='Calibri',
...                 size=11,
...                 bold=False,
...                 italic=False,
...                 vertAlign=None,
...                 underline='none',
...                 strike=False,
...                 color='FF000000')
>>> fill = PatternFill(fill_type=None,
...                 start_color='FFFFFFFF',
...                 end_color='FF000000')
>>> border = Border(left=Side(border_style=None,
...                           color='FF000000'),
...                 right=Side(border_style=None,
...                            color='FF000000'),
...                 top=Side(border_style=None,
...                          color='FF000000'),
...                 bottom=Side(border_style=None,
...                             color='FF000000'),
...                 diagonal=Side(border_style=None,
...                               color='FF000000'),
...                 diagonal_direction=0,
...                 outline=Side(border_style=None,
...                              color='FF000000'),
...                 vertical=Side(border_style=None,
...                               color='FF000000'),
...                 horizontal=Side(border_style=None,
...                                color='FF000000')
...                )
>>> alignment=Alignment(horizontal='general',
...                     vertical='bottom',
...                     text_rotation=0,
...                     wrap_text=False,
...                     shrink_to_fit=False,
...                     indent=0)
>>> number_format = 'General'
>>> protection = Protection(locked=True,
...                         hidden=False)
>>>

单元格样式和命名样式

有两种类型的样式:单元格样式和命名样式,也称为样式模板。

单元格样式

单元格样式在对象之间共享,一旦分配了单元格样式就不能更改。这样就可以避免不必要的副作用,比如改变很多单元格的样式,而不是只改变一个。

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color=colors.RED)
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # 斜体样式,没有在ft 中设置好, 当单元格a1 被赋予格式ft 后,就不允许额外设置格式。
>>>
>>> # 如果你想要改变字体格式的颜色,你需要重新设置它。
>>>
>>> a1.font = Font(color=colors.RED, italic=True) # 在ft中改变好,重新把格式赋给a1,同是,该格式只能影响a1 对象,不影响其他单元格

复制样式

样式也可以复制

>>> from openpyxl.styles import Font
>>> from copy import copy
>>>
>>> ft1 = Font(name='Arial', size=14)
>>> ft2 = copy(ft1)
>>> ft2.name = "Tahoma"
>>> ft1.name
'Arial'
>>> ft2.name
'Tahoma'
>>> ft2.size # copied from the
14.0

 基本的字体颜色

颜色通常是RGB或aRGB六边形。colors模块包含一些方便的常量

>>> from openpyxl.styles import Font
>>> from openpyxl.styles.colors import RED
>>> font = Font(color=RED)
>>> font = Font(color="FFBB00")

还支持遗留的索引颜色以及主题和色调

>>> from openpyxl.styles.colors import Color
>>> c = Color(indexed=32)
>>> c = Color(theme=6, tint=0.5)

应用样式

样式直接应用于单元格

>>> from openpyxl.workbook import Workbook
>>> from openpyxl.styles import Font, Fill
>>> wb = Workbook()
>>> ws = wb.active
>>> c = ws['A1']
>>> c.font = Font(size=12)

样式还可以应用于列和行,但请注意,这只适用于在文件关闭后(在Excel中)创建的单元格。如果要将样式应用于整个行和列,则必须自己将样式应用于每个单元格。这是对文件格式的限制:

>>> col = ws.column_dimensions['A']
>>> col.font = Font(bold=True)
>>> row = ws.row_dimensions[1]
>>> row.font = Font(underline="single")

样式合并单元格

有时,您希望将范围内的单元格格式化为单个对象(也叫:合并单元格)。Excel表面上通过合并单元格(实际上是删除除左上角单元格之外的所有单元格)实现了这种可能的,然后重新创建它们以应用伪样式。(这种表里不一的骚操作,让用户只需要看到自己需要看到的内容,内部的实际情况,用户不会关心。)

from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
from openpyxl import Workbookdef style_range(ws, cell_range, border=Border(), fill=None, font=None, alignment=None):"""Apply styles to a range of cells as if they were a single cell.:param ws:  Excel worksheet instance:param range: An excel range to style (e.g. A1:F20):param border: An openpyxl Border:param fill: An openpyxl PatternFill or GradientFill:param font: An openpyxl Font object"""top = Border(top=border.top)left = Border(left=border.left)right = Border(right=border.right)bottom = Border(bottom=border.bottom)first_cell = ws[cell_range.split(":")[0]]if alignment:ws.merge_cells(cell_range)first_cell.alignment = alignmentrows = ws[cell_range]if font:first_cell.font = fontfor cell in rows[0]:cell.border = cell.border + topfor cell in rows[-1]:cell.border = cell.border + bottomfor row in rows:l = row[0]r = row[-1]l.border = l.border + leftr.border = r.border + rightif fill:for c in row:c.fill = fillwb = Workbook()
ws = wb.active
my_cell = ws['B2']
my_cell.value = "My Cell"
thin = Side(border_style="thin", color="000000")
double = Side(border_style="double", color="ff0000")border = Border(top=double, left=thin, right=thin, bottom=double)
fill = PatternFill("solid", fgColor="DDDDDD")
fill = GradientFill(stop=("000000", "FFFFFF"))
font = Font(b=True, color="FF0000")
al = Alignment(horizontal="center", vertical="center")style_range(ws, 'B2:F4', border=border, fill=fill, font=font, alignment=al)
wb.save("styled.xlsx")

编辑页面设置

>>> from openpyxl.workbook import Workbook
>>>
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE
>>> ws.page_setup.paperSize = ws.PAPERSIZE_TABLOID
>>> ws.page_setup.fitToHeight = 0
>>> ws.page_setup.fitToWidth = 1

命名样式

相对于单元格样式,命名样式是可变的。当您想一次对许多不同的单元格应用格式时,它们是有意义的。

将命名样式分配给单元格后,对样式的额外更改不会影响单元格。

一旦命名样式注册到工作簿中,就可以通过名称来引用它。

创建一个指定样式

>>> from openpyxl.styles import NamedStyle, Font, Border, Side
>>> highlight = NamedStyle(name="highlight")
>>> highlight.font = Font(bold=True, size=20)
>>> bd = Side(style='thick', color="000000")
>>> highlight.border = Border(left=bd, top=bd, right=bd, bottom=bd)

一旦创建了命名样式,就可以在工作簿中注册:

wb.add_named_style(highlight)

  但是命名样式在第一次分配给单元格时也会自动注册:

>>> ws['A1'].style = highlight

  一旦注册使用名称分配样式:

>>> ws['D5'].style = 'highlight'

采用内置样式

该规范还包括一些可以使用的内置样式。不幸的是,这些样式的名称存储在它们的本地化表单中。openpyxl将只识别英语名称,并且只完全按照这里所写。这些都是如下:

  • ‘Normal’ # same as no style

数值 格式化

  • ‘Comma’
  • ‘Comma [0]’
  • ‘Currency’
  • ‘Currency [0]’
  • ‘Percent’

Informative      ###

  • ‘Calculation’
  • ‘Total’
  • ‘Note’
  • ‘Warning Text’
  • ‘Explanatory Text’

文字样式

  • ‘Title’
  • ‘Headline 1’
  • ‘Headline 2’
  • ‘Headline 3’
  • ‘Headline 4’
  • ‘Hyperlink’
  • ‘Followed Hyperlink’
  • ‘Linked Cell’

Comparisons

  • ‘Input’
  • ‘Output’
  • ‘Check Cell’
  • ‘Good’
  • ‘Bad’
  • ‘Neutral’

Highlights  高亮

  • ‘Accent1’
  • ‘20 % - Accent1’
  • ‘40 % - Accent1’
  • ‘60 % - Accent1’
  • ‘Accent2’
  • ‘20 % - Accent2’
  • ‘40 % - Accent2’
  • ‘60 % - Accent2’
  • ‘Accent3’
  • ‘20 % - Accent3’
  • ‘40 % - Accent3’
  • ‘60 % - Accent3’
  • ‘Accent4’
  • ‘20 % - Accent4’
  • ‘40 % - Accent4’
  • ‘60 % - Accent4’
  • ‘Accent5’
  • ‘20 % - Accent5’
  • ‘40 % - Accent5’
  • ‘60 % - Accent5’
  • ‘Accent6’
  • ‘20 % - Accent6’
  • ‘40 % - Accent6’
  • ‘60 % - Accent6’
  • ‘Pandas’

有关内置样式的更多信息,请参阅 openpyxpath .styles.builtin

转载于:https://www.cnblogs.com/Mengchangxin/p/9500263.html

Python处理Excel文档之openpyxl (三)简单的使用相关推荐

  1. 深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl

    深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl 一.Python安装openpyxl 二.Pycharm为项目安 ...

  2. 用python处理excel-使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  3. python 修改excel文档

    openpyxl 使用python修改excel文档,保留文档原有的样式风格 import numpy as np import openpyxl as pd from datetime import ...

  4. python读取excel文档的sheet

    python读取excel文档的sheet 1. 使用xlrd import xlrd # 打开文件方式1: work_book = xlrd.open_workbook('F:\\Course\\d ...

  5. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...

    本文主要介绍xlrd模块读取Excel文档的基本用法,并以一个GDP数据的文档为例来进行操作. 1. 准备工作: 1. 安装xlrd:pip install xlrd 2. 准备数据集:从网上找到的1 ...

  6. excel文档加密破解,简单操作亲测有效

    excel文件秘密忘记无法打开,试了网上的几种方法 1.将文件后缀改为rar压缩包格式改配置文件,但是将文件改为压缩包格式后打不开,提示文件已损坏.(可能已经优化) 2.下一些辅助工具来破解,但是需要 ...

  7. Python openpyxl 之 Excel 文档简单操作

    背景:生活中常常因日常工作,在记录统计方面需频繁处理较多 Excel 表格,这部分工作虽可由人工完成,但这样会显得有些繁琐且可能存在偏差,遂闲时查阅了是否有相关基于python处理Excel表格的学习 ...

  8. 用 Python 帮运营妹纸快速搞定 Excel 文档

    Microsoft Office 被广泛用于商务和运营分析中, 其中 Excel 尤其受欢迎.Excel 可以用于存储表格数据.创建报告.图形趋势等.在深入研究用 Python 处理 Excel 文档 ...

  9. python 使用XLWT编辑Excel文档

    xlwt 是python编辑Excel文档的第三方库,xiwt简单 易用,非常容易上手. 本文只对xlwt作简要的使用描述. 首先我们的python环境需要有xlwt这个第三方库,没有的要先安装,我用 ...

最新文章

  1. python使用numpy包编写自定义函数计算MAPE(平均绝对百分比误差)指标mean absolute percentage error (MAPE)、MAPE指标解读、MAPE指标使用的注意事项
  2. Windows Server 2003摆脱了恼人的Ctrl+Alt+Del
  3. 2015年山石网科面试题
  4. java数据类型,取值范围,引用类型解析
  5. 3D数学基础:图形与游戏开发---随笔三
  6. 终于等到你!2020年电子设计竞赛来了!
  7. pandas 空字符串与na区别_pandas中对nan空值的判断
  8. spring bean加载过程_Spring的Bean加载容器机制
  9. 吴恩达机器学习课程笔记
  10. Windows隐藏工具栏并使程序窗口全屏显示
  11. 什么是 make 和 makefile
  12. 如何用PS把照片变成红/白/蓝底
  13. 20-30岁怎么规划自己的人生呢?
  14. 计算机主机如何控制计算机室,电脑远程控制怎么弄?电脑弄远程控制功能的方法...
  15. 泡利不相容原理适用的空间范围(系统)是多大?
  16. 1135 mysql_mysql的1135错误解决方法
  17. 中国石油大学计算机科学与技术在哪个校区,庞善臣 - 中国石油大学 - 计算机科学与技术学院...
  18. IDS(入侵检测系统)简介
  19. python读视频文件_python读取和保存视频文件
  20. android 购物车布局,Android 加入购物车动画

热门文章

  1. 【动态规划】多重背包问题:P1077摆花
  2. 蓝桥杯笔记:DFS(深度优先搜索)解决问题
  3. oracle异机复制,oracle冷备份恢复和oracle异机恢复使用方法
  4. 如何处理 Kubeadm 搭建的集群证书过期问题
  5. PowerDesigner导出SQL脚本运行注释出现乱码问题
  6. springboot 启动加载数据库数据到redis缓存
  7. 第十八届浙大城市学院程序设计竞赛(同步赛)签到题ABDFGJL
  8. 小米2S ROM重分区
  9. NYOJ399 - 整除个数
  10. android怎么阿看手机是移动联通还是电信的网络,GSM是联通、移动还是电信的网络?...