Python处理Excel文档之openpyxl (三)简单的使用
使用样式
简介
样式用于在屏幕上显示时更改数据的外观。它们还用于确定数字的格式。
样式可以应用于以下几个方面:
- 字体设置字体大小、颜色、下划线等。
- 填充以设置图案或颜色渐变
- 边框在单元格上设置边框
- 单元格排列
- 保护
以下是默认值:
>>> 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 (三)简单的使用相关推荐
- 深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl
深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl 一.Python安装openpyxl 二.Pycharm为项目安 ...
- 用python处理excel-使用Python操作Excel文档(一)
Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...
- python 修改excel文档
openpyxl 使用python修改excel文档,保留文档原有的样式风格 import numpy as np import openpyxl as pd from datetime import ...
- python读取excel文档的sheet
python读取excel文档的sheet 1. 使用xlrd import xlrd # 打开文件方式1: work_book = xlrd.open_workbook('F:\\Course\\d ...
- python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...
本文主要介绍xlrd模块读取Excel文档的基本用法,并以一个GDP数据的文档为例来进行操作. 1. 准备工作: 1. 安装xlrd:pip install xlrd 2. 准备数据集:从网上找到的1 ...
- excel文档加密破解,简单操作亲测有效
excel文件秘密忘记无法打开,试了网上的几种方法 1.将文件后缀改为rar压缩包格式改配置文件,但是将文件改为压缩包格式后打不开,提示文件已损坏.(可能已经优化) 2.下一些辅助工具来破解,但是需要 ...
- Python openpyxl 之 Excel 文档简单操作
背景:生活中常常因日常工作,在记录统计方面需频繁处理较多 Excel 表格,这部分工作虽可由人工完成,但这样会显得有些繁琐且可能存在偏差,遂闲时查阅了是否有相关基于python处理Excel表格的学习 ...
- 用 Python 帮运营妹纸快速搞定 Excel 文档
Microsoft Office 被广泛用于商务和运营分析中, 其中 Excel 尤其受欢迎.Excel 可以用于存储表格数据.创建报告.图形趋势等.在深入研究用 Python 处理 Excel 文档 ...
- python 使用XLWT编辑Excel文档
xlwt 是python编辑Excel文档的第三方库,xiwt简单 易用,非常容易上手. 本文只对xlwt作简要的使用描述. 首先我们的python环境需要有xlwt这个第三方库,没有的要先安装,我用 ...
最新文章
- python使用numpy包编写自定义函数计算MAPE(平均绝对百分比误差)指标mean absolute percentage error (MAPE)、MAPE指标解读、MAPE指标使用的注意事项
- Windows Server 2003摆脱了恼人的Ctrl+Alt+Del
- 2015年山石网科面试题
- java数据类型,取值范围,引用类型解析
- 3D数学基础:图形与游戏开发---随笔三
- 终于等到你!2020年电子设计竞赛来了!
- pandas 空字符串与na区别_pandas中对nan空值的判断
- spring bean加载过程_Spring的Bean加载容器机制
- 吴恩达机器学习课程笔记
- Windows隐藏工具栏并使程序窗口全屏显示
- 什么是 make 和 makefile
- 如何用PS把照片变成红/白/蓝底
- 20-30岁怎么规划自己的人生呢?
- 计算机主机如何控制计算机室,电脑远程控制怎么弄?电脑弄远程控制功能的方法...
- 泡利不相容原理适用的空间范围(系统)是多大?
- 1135 mysql_mysql的1135错误解决方法
- 中国石油大学计算机科学与技术在哪个校区,庞善臣 - 中国石油大学 - 计算机科学与技术学院...
- IDS(入侵检测系统)简介
- python读视频文件_python读取和保存视频文件
- android 购物车布局,Android 加入购物车动画
热门文章
- 【动态规划】多重背包问题:P1077摆花
- 蓝桥杯笔记:DFS(深度优先搜索)解决问题
- oracle异机复制,oracle冷备份恢复和oracle异机恢复使用方法
- 如何处理 Kubeadm 搭建的集群证书过期问题
- PowerDesigner导出SQL脚本运行注释出现乱码问题
- springboot 启动加载数据库数据到redis缓存
- 第十八届浙大城市学院程序设计竞赛(同步赛)签到题ABDFGJL
- 小米2S ROM重分区
- NYOJ399 - 整除个数
- android怎么阿看手机是移动联通还是电信的网络,GSM是联通、移动还是电信的网络?...