Python_openpyxl_styles样式处理

前言

继续搞Python对Excel文件的处理,这次主要解决如何使用Openpyxl模块的Styles来生成一个具有个性化样式的Excel文件。本篇基本算是翻译了部分实用的官方文档内容,推荐小伙伴们最好的学习方法,莫过于阅读官方文档。: ) 
官当文档传送门:http://openpyxl.readthedocs.org/en/default/styles.html#worksheet-additional-properties

系统软件

  • 系统 
    • Windows 8.1
  • 软件 
    • Python 3.4.3
    • IPython 4.0.0

Working with styles

使用Excel样式函数 
Introduction(简介) 
Styles are used to change the look of your data while displayed on screen. They are also used to determine the number format being used for a given cell or range of cells. 
Styles是用于改变你的希望显示的数据的样式。也可以用于设置指定的单元格或单元区域的数字格式。

Styles can be applied to the following aspects

  • font to set font size, color, underlining, etc.(能够设定字体的大小、颜色、下划线等属性)
  • fill to set a pattern or color gradient(能够设置单元格的填充样式或颜色渐变)
  • border to set borders on a cell(能够设置单元格的边框)
  • cell alignment(能够设置单元格的对齐)
  • protection(能够设置访问限制)

Styles模块

The following are the default values(下面是函数的参数缺省值)

>>> 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)
>>>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

注意: 
Styles are shared between objects and once they have been assigned they cannot be changed. This stops unwanted side-effects such as changing the style for lots of cells when instead of only one. 
不同的对象之间是可以共享同一个Styles的,并且一旦为对象指定了Styles之后就不可以再次更改。这是为了在更改很多的单元格的Styles而不仅只是更改一个单元格时能够避免不必要的副作用。

>>> from openpyxl.styles import colors
>>> from openpyxl.styles import Font, Color
>>> from openpyxl.styles import colors
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> a1 = ws['A1']
>>> d4 = ws['D4']
>>> ft = Font(color=colors.RED)      #定义一个可以共享的Styles
>>> a1.font = ft
>>> d4.font = ft
>>>
>>> a1.font.italic = True # is not allowed 对象在指定Styles后是不允许被更改的
>>>
>>> # If you want to change the color of a Font, you need to reassign it::
>>> # 如果你想更改个别对象的Styles需要重新定义,且只会影响到个别对象
>>> a1.font = Font(color=colors.RED, italic=True) # the change only affects A1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Copying styles

Styles can also be copied(Styles可以被复制)

>>> from openpyxl.styles import Font
>>>
>>> ft1 = Font(name='Arial', size=14)
>>> ft2 = ft1.copy(name="Tahoma")     #复制并修改特定属性
>>> ft1.name
'Arial'
>>> ft2.name
'Tahoma'
>>> ft2.size # copied from the 14.0   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Basic Font Colors

Colors are usually RGB or aRGB hexvalues. The colors module contains some constants 
Colors通常是RGB或者是RGB的十六进制表示。Colors模块包含了一些常量

>>> from openpyxl.styles import Font
>>> from openpyxl.styles.colors import RED
>>> font = Font(color=RED)         #RGB
>>> font = Font(color="FFBB00")    #RGB hexvalues
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

There is also support for legacy indexed colors as well as themes and tints 
Colors也支持索引颜色、主题和色彩

>>> from openpyxl.styles.colors import Color
>>> c = Color(indexed=32)            #legacy indexed colors 定制好的Color通过索引调用
>>> c = Color(theme=6, tint=0.5)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

Applying Styles

Styles are applied directly to cells 
Styles直接应用于单元格

>>> from openpyxl.workbook import Workbook
>>> from openpyxl.styles import Font, Fill
>>> wb = Workbook()
>>> ws = wb.active
>>> c = ws['A1']           #获取单元格对象
>>> c.font = Font(size=12) #直接修改单元格对象的字体样式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Styles can also applied to columns and rows but note that this applies only to cells created (in Excel) after the file is closed. If you want to apply styles to entire rows and columns then you must apply the style to each cell yourself. This is a restriction of the file format 
Styles也可以应用于列和行,但是需要注意的是这种应用只能适用于在关闭文件之后创建的单元格。如果你想应用Style于全部的行和列,你必须为每一个单元格都应用Style。这是由于文件格式的制约

>>> col = ws.column_dimensions['A']    #获取A列的样式
>>> col.font = Font(bold=True)
>>> row = ws.row_dimensions[1]         #获取1行的样式
>>> row.font = Font(underline="single")
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Edit Page Setup

>>> 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Edit Print Options

>>> from openpyxl.workbook import Workbook
>>>
>>> wb = Workbook()
>>> ws = wb.active
>>>
>>> ws.print_options.horizontalCentered = True     #水平居中
>>> ws.print_options.verticalCentered = True       #垂直居中
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Header / Footer

Headers and footers use their own formatting language. This is fully supported when writing them.but, due to the complexity and the possibility of nesting, only partially when reading them.

头部和尾部使用它们自身的格式化语言。当你写的时候是完全支持的。但是由于复制性和嵌套的可能性,让你读取的时候可能只能读取到一个部分。

>>> from openpyxl.workbook import Workbook
>>>
>>> wb = Workbook()
>>> ws = wb.worksheets[0]
>>> #设置文件头部和页尾的样式
>>> ws.header_footer.center_header.text = 'My Excel Page'
>>> ws.header_footer.center_header.font_size = 14
>>> ws.header_footer.center_header.font_name = "Tahoma,Bold"
>>> ws.header_footer.center_header.font_color = "CC3366"

转载:http://blog.csdn.net/jmilk/article/details/50444829

时间: 2024-12-27 15:23:11

Python_openpyxl_styles样式处理的相关文章

利用PS图层样式制作绿色水晶立体字

效果图为比较常见的立体字,制作的时候可以先把文字复制多层,副本图层填充改为0,然后分别加上图层样式得到层次感比较好的水晶效果,再用错位的方法制作立体面即可. 最终效果 <点小图查看大图> 1.新建画布,大小并不固定,此教程是以1200 * 600为实例的. 新建图层,首先去做一个径向渐变,然后在此图层上设置图层样式,然后在此图层上方加一个暗角层(先将整个图层填充黑色,再用椭圆选框工具从中心拉一个椭圆,Shift + F6羽化选区,按Delete删除,适当调整不透明度). 2.建立新组命名为&q

利用PS纹理素材及图层样式制作墙壁裂纹字

裂纹字制作思路非常简单:选好相应的纹理背景,然后用图层样式给文字增加浮雕及初步的纹理效果,再用裂纹素材叠加到文字上面,并调好颜色即可. 最终效果 <点小图查看大图> 1.首先新建画布,大小:1200 * 600,将背景素材拖入到画布中去,然后将纹理图片放到背景图层的上方,图层模式为"正片叠底",并给纹理图层添加蒙版,擦除中间部分为文字效果留出空位,再为这两层添加一个图层组(选中这两个图层,然后快捷键Ctrl + G 即可). <点小图查看大图> <点小图查

利用PS图层样式制作火焰字技巧

用滤镜.涂抹工具.火焰素材等制作火焰字都非常不错.这里再介绍一种非常快捷的方法,直接用图层样式来制作.只需要把文字或图形图层多复制几层,分别设置相应的样式及混合模式,就可以做出同样完美的效果. 最终效果 <图1> 1.新建一个700 * 500像素的文档(大小可以自定),背景填充黑色. <图2> 2.选择文字工具,打上所需文字(字体选稍粗一点的,不一定要数字,汉子也可以),字体颜色选用白色,如下图. <图3> 3.双击图层面板文字缩略图调出图层样式,先设置投影,参数设置

通过脚本修改图层样式默认全局光角度

大家有没有碰到过这种情况: 当我们做UI效果图,在PS设置好投影内阴影角度什么的之后(我设的是90度),通过了,准备切图时,一导出到新文档,或者别人做好了把PSD文档发给你,你打开后发现角度全变成120度了,如下图:   为什么呢?因为这些投影在图层样式里是设置的"全局光",而全局光是不能更改的,默认就是120度,就算你在下面点"设置为默认值"还是没用,因为它只能保存距离.扩展.大小等参数,如下图: 那么我们完全可以把全局光给去掉,那么复制到新文档里或者其他人打开你

浅谈document.write()输出样式

  这篇文章主要介绍了浅谈document.write()输出样式,十分的简单实用,有需要的小伙伴可以参考下. js中的最基本的命令之一:document.write(),用于简单的打印内容到页面上,可以逐字打印你需要的内容--document.write("content"),这里content就是需要输出的内容;当然还有一种情况,需要输出JS之中比如变量等等变化的东西,那么就需要用document.write(+variable);当然variable就是你想要输出的变量. 既然可

用图层样式及画笔制作补丁上的牛皮字

教程由两部分构成:牛仔布补丁和牛皮字.两部分制作方法也非常类似,过程:先用选区等截取想要的纹理,用图层样式加上初步的浮雕效果,然后缩小选区,增加描边,缝纫的线条等即可得到初步的效果,后期再增加一些细节增强真实感即可. 最终效果 1.打开小牛皮. 2.顺便把牛仔布也放进去.

Silverlight重写控件样式

在实际开发应用中,Silverlight默认控件样式并不能满足我们所有的需求,特别是对华丽界面的构造,需 要对现有控件进行皮肤重写.WPF/Silverlight中使用xaml描述界面,类似Css,它们同样有Style和Template .目前微软开源工具包中集成的均是复杂类型控件,如何修改它们的样式确实难倒了不少朋友,那么本节以分 析为主,结合对常用的NumericUpDown控件向大家讲解如何对现有控件进行样式重写. 首先打开工具包中的示例项目: 接着找到NumericUpDownSampl

Sketch 插件介绍:Style Inventory(样式清单)

译者最近在做一个比较大的设计项目,才开始系统接触设计规范相关的内容,根据项目也需要生成一套样式清单供其他设计同事和研发团队使用.看到这款 Sketch 插件后发现有几个功能比较实用,比如能够一键汇总.导出所有项目/画板中所用到的颜色.字体样式信息.因此简单翻译了一下本插件开源地址的 Readme,希望有需要的朋友可以参考,原文地址如下:getflourish/Sketch-Style-Inventory · GitHub 注:原文页中有 gif 动图,因为专栏不支持动图显示,所以只截取了一帧,如

ie-IE浏览器样式错误的问题,求大神帮忙?

问题描述 IE浏览器样式错误的问题,求大神帮忙? 2C 为什么页面的样式在别的浏览器上显示正确,在IE浏览器上完全没有了样式,有什么可能啊,急需?? 解决方案 ie不完全兼容html5和css3 解决方案二: 你用的哪个版本的Ie;你可以向上或向下调调看看 解决方案三: 应该是不支持,兼容性问题吧.可以写下判断是那种浏览器,然后根据不同浏览器调用不同样式. 解决方案四: 什么样式,是颜色呢,还是排版 解决方案五: .bb{ background-color:#f1ee18;/*所有识别*/ .b