Python xlwt 模块 Excel表格 基础 3:单元格格式、字体格式、对齐方式、边框及填充等

    • 前言:
    • 1、数据类型设置
    • 2、字体设置
    • 3、单元格对齐方式
    • 4、单元格边框设置
    • 5、填充设置
    • 6、单元格保护
    • 结尾:
  • 【Python与Office】专栏

前言:

上一篇博客介绍了xlwt 模块设置 Excel 表格文件的 窗口显示样式、默认打印格式等 方法。

本篇博客主要对表格文件的 单元格格式设置 进行介绍,主要包括:

1. 单元格数据类型;
2. 字体设置;
3. 对齐方式;
4. 边框设置;
5. 填充设置;
6. 单元格保护。

1、数据类型设置

这里还是用上一节的方式,先建立两个sheet表,写入数据,然后对Tset sheet表设置自定义的单元格格式,T2 sheet表以默认的单元格格式写入。

# 导入模块
import xlwtwork_book = xlwt.Workbook()
work_sheet = work_book.add_sheet('Test')
w2 = work_book.add_sheet('T2')
# 创建数据
z = [[r,c] for r in range(20) for c in range(20)]
[l.append(str(i)) for i,l in enumerate(z)]

单元格格式设置方法:

单元格格式设置也有一套固定的流程:

创建单元格样式对象——设置样式(修改样式属性值)——将数据写入单元格时以创建的样式写入

# 建立样式
my_style_1 = xlwt.XFStyle()
# 建立单元格数据类型,数值类型,默认为:'General'
my_style_1.num_format_str = '0'
# 写入数据、Test sheet对象以自定义格式写入,T2 sheet对象以默认格式写入
for info in z:# 写入数据,并对单元格设置格式work_sheet.write(info[0],info[1],info[2],my_style_1)w2.write(info[0],info[1],info[2])# 保存文件
work_book.save('Test3.xls')

可设置的数据格式有:

# 单元格数据类型  #######################################################
''''general','0','0.00','#,##0','#,##0.00','"$"#,##0_);("$"#,##0)','"$"#,##0_);[Red]("$"#,##0)','"$"#,##0.00_);("$"#,##0.00)','"$"#,##0.00_);[Red]("$"#,##0.00)','0%','0.00%','0.00E+00','# ?/?','# ??/??','M/D/YY','D-MMM-YY','D-MMM','MMM-YY','h:mm AM/PM','h:mm:ss AM/PM','h:mm','h:mm:ss','M/D/YY h:mm','_(#,##0_);(#,##0)','_(#,##0_);[Red](#,##0)','_(#,##0.00_);(#,##0.00)','_(#,##0.00_);[Red](#,##0.00)','_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)','_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)','_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)','_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)','mm:ss','[h]:mm:ss','mm:ss.0','##0.0E+0','@'
'''

2、字体设置

先建立一个字体对象:

# 建立字体
font = my_style_1.font

然后对字体名称,字体高度、加粗等方面进行设置:

可设置项(默认设置):

# self.height = 0x00C8  # 200: this is font with height 10 points
# self.italic = False
# self.struck_out = False
# self.outline = False
# self.shadow = False
# self.colour_index = 0x7FFF
# self.bold = False
# self._weight = 0x0190  # 0x02BC gives bold font
# self.escapement = self.ESCAPEMENT_NONE
# self.underline = self.UNDERLINE_NONE
# self.family = self.FAMILY_NONE
# self.charset = self.CHARSET_SYS_DEFAULT
# self.name = 'Arial'

实例:

# 设置字体名称
font.name = 'Times New Roman '
# 设置字体高度
font.height = 400
# 设置斜体
font.italic = True
# 设置删除线
font.struck_out = True
# 设置轮廓
font.outline = True
# 设置阴影
font.shadow = True
# 设置字体颜色、蓝色
font.colour_index = 0x0C
# 设置加粗
font.bold = True
# 设置字体上下标、上标
# font.escapement = 1
# 设置下划线、双层下划线
font.underline = 2
# 设置字符集、GBK
font.charset = 0x86

设置效果图:


获取字体格式信息:

除了可以设置单元格格式外,还可以通过_search_key() 方法来获取单元格样式信息。

font_info = font._search_key()
print(font_info)
# 打印结果:
# (400, True, True, True, True, 12, True, 400, 0, 2, 0, 134, 'Times New Roman ')

字体格式设置说明:

上面的设置将字体颜色用,设置为蓝色:

font.colour_index = 0x0C

字体颜色可选值:

# 颜色索引  #######################################################
"""
aqua 0x31
black 0x08
blue 0x0C
blue_gray 0x36
bright_green 0x0B
brown 0x3C
coral 0x1D
cyan_ega 0x0F
dark_blue 0x12
dark_blue_ega 0x12
dark_green 0x3A
dark_green_ega 0x11
dark_purple 0x1C
dark_red 0x10
dark_red_ega 0x10
dark_teal 0x38
dark_yellow 0x13
gold 0x33
gray_ega 0x17
gray25 0x16
gray40 0x37
gray50 0x17
gray80 0x3F
green 0x11
ice_blue 0x1F
indigo 0x3E
ivory 0x1A
lavender 0x2E
light_blue 0x30
light_green 0x2A
light_orange 0x34
light_turquoise 0x29
light_yellow 0x2B
lime 0x32
magenta_ega 0x0E
ocean_blue 0x1E
olive_ega 0x13
olive_green 0x3B
orange 0x35
pale_blue 0x2C
periwinkle 0x18
pink 0x0E
plum 0x3D
purple_ega 0x14
red 0x0A
rose 0x2D
sea_green 0x39
silver_ega 0x16
sky_blue 0x28
tan 0x2F
teal 0x15
teal_ega 0x15
turquoise 0x0F
violet 0x14
white 0x09
yellow 0x0D
"""

字体上下标设置、下划线设置、字符集设置:

# 字体上标
font.escapement = 1
# 设置下划线、双层下划线
font.underline = 2
# 设置字符集、GBK
font.charset = 0x86

解析:

这里单元格默认的字体上下标设置是:

self.escapement = self.ESCAPEMENT_NONE

查下面的索引:ESCAPEMENT_NONE = 0x00
如我们想将单元格设置为上标,上标是:ESCAPEMENT_SUPERSCRIPT ,对应的值为:0x01(16位数字)
及单元格格式设置为:

font.escapement = 0x01
或:
font.escapement = 1

下面出现的其他设置都是类似原理,如再次出现就不解释了。

上下标、下划线、字符集索引:

ESCAPEMENT_NONE         = 0x00
# 上标
ESCAPEMENT_SUPERSCRIPT  = 0x01
# 下标
ESCAPEMENT_SUBSCRIPT    = 0x02
# 下划线可选值
UNDERLINE_NONE          = 0x00
UNDERLINE_SINGLE        = 0x01
UNDERLINE_SINGLE_ACC    = 0x21
UNDERLINE_DOUBLE        = 0x02
UNDERLINE_DOUBLE_ACC    = 0x22
# 字符集可选值
CHARSET_ANSI_LATIN          = 0x00
CHARSET_SYS_DEFAULT         = 0x01
CHARSET_SYMBOL              = 0x02
CHARSET_APPLE_ROMAN         = 0x4D
CHARSET_ANSI_JAP_SHIFT_JIS  = 0x80
CHARSET_ANSI_KOR_HANGUL     = 0x81
CHARSET_ANSI_KOR_JOHAB      = 0x82
CHARSET_ANSI_CHINESE_GBK    = 0x86
CHARSET_ANSI_CHINESE_BIG5   = 0x88
CHARSET_ANSI_GREEK          = 0xA1
CHARSET_ANSI_TURKISH        = 0xA2
CHARSET_ANSI_VIETNAMESE     = 0xA3
CHARSET_ANSI_HEBREW         = 0xB1
CHARSET_ANSI_ARABIC         = 0xB2
CHARSET_ANSI_BALTIC         = 0xBA
CHARSET_ANSI_CYRILLIC       = 0xCC
CHARSET_ANSI_THAI           = 0xDE
CHARSET_ANSI_LATIN_II       = 0xEE
CHARSET_OEM_LATIN_I         = 0xFF

3、单元格对齐方式

建立对齐方式对象,设置对齐方式属性:

可设置项(默认设置):

# self.horz = self.HORZ_GENERAL
# self.vert = self.VERT_BOTTOM
# self.dire = self.DIRECTION_GENERAL
# self.orie = self.ORIENTATION_NOT_ROTATED
# self.rota = self.ROTATION_0_ANGLE
# self.wrap = self.NOT_WRAP_AT_RIGHT
# self.shri = self.NOT_SHRINK_TO_FIT
# self.inde = 0
# self.merg = 0

实例:

# 建立对其方式:
alignment = my_style_1.alignment
# 水平对齐方式、水平居中
alignment.horz = 2
# 垂直对齐方式、垂直居中
alignment.vert = 1
# 旋转方向,设置旋转方向45
alignment.rota = 45
# 自动缩进设置
alignment.shri = 1

设置效果图:


获取对齐方式信息:

# 获取当前对齐方式
alignment_info = alignment._search_key()
print(alignment_info)
# 打印结果:
# (2, 1, 0, 0, 45, 0, 1, 0, 0)

其他对齐方式索引:

# 水平对齐方式
HORZ_GENERAL                = 0x00
HORZ_LEFT                   = 0x01
HORZ_CENTER                 = 0x02
HORZ_RIGHT                  = 0x03
HORZ_FILLED                 = 0x04
HORZ_JUSTIFIED              = 0x05 # BIFF4-BIFF8X
HORZ_CENTER_ACROSS_SEL      = 0x06 # Centred across selection (BIFF4-BIFF8X)
HORZ_DISTRIBUTED            = 0x07 # Distributed (BIFF8X)
# 垂直对齐方式
VERT_TOP                    = 0x00
VERT_CENTER                 = 0x01
VERT_BOTTOM                 = 0x02
VERT_JUSTIFIED              = 0x03 # Justified (BIFF5-BIFF8X)
VERT_DISTRIBUTED            = 0x04 # Distributed (BIFF8X)
# 旋转角度
ROTATION_0_ANGLE            = 0x00
ROTATION_STACKED            = 0xFF
# 自动缩进设置
SHRINK_TO_FIT               = 0x01
NOT_SHRINK_TO_FIT           = 0x00

4、单元格边框设置

建立单元格边框对象,设置属性值:

可设置项(默认值):

# self.left = self.NO_LINE
# self.right = self.NO_LINE
# self.top = self.NO_LINE
# self.bottom = self.NO_LINE
# self.diag = self.NO_LINE# self.left_colour = 0x40
# self.right_colour = 0x40
# self.top_colour = 0x40
# self.bottom_colour = 0x40
# self.diag_colour = 0x40# self.need_diag1 = self.NO_NEED_DIAG1
# self.need_diag2 = self.NO_NEED_DIAG2

实例:

borders = my_style_1.borders
# 左边框 细线
borders.left = 1
# 右边框 中细线
borders.right = 2
# 上边框 虚线
borders.top = 3
# 下边框 点线
borders.bottom = 4
# 内边框 粗线
borders.diag = 5# 左边框颜色 蓝色
borders.left_colour = 0x0C
# 右边框颜色 金色
borders.right_colour = 0x33
# 上边框颜色 绿色
borders.top_colour = 0x11
# 下边框颜色 红色
borders.bottom_colour = 0x0A
# 内边框 黄色
borders.diag_colour = 0x0D

设置效果:


获取边框设置信息:

borders_info = borders._search_key()
print(borders_info)
# 打印结果
# (1, 2, 3, 4, 5, 12, 51, 17, 10, 13, 0, 0)

边框线型索引:

NO_LINE = 0x00
THIN    = 0x01
MEDIUM  = 0x02
DASHED  = 0x03
DOTTED  = 0x04
THICK   = 0x05
DOUBLE  = 0x06
HAIR    = 0x07
#The following for BIFF8
MEDIUM_DASHED               = 0x08
THIN_DASH_DOTTED            = 0x09
MEDIUM_DASH_DOTTED          = 0x0A
THIN_DASH_DOT_DOTTED        = 0x0B
MEDIUM_DASH_DOT_DOTTED      = 0x0C
SLANTED_MEDIUM_DASH_DOTTED  = 0x0D

注:边框颜色设置可参看字体颜色设置索引。

5、填充设置

建立填充对象,设置属性:

可设置项(默认值):

# self.pattern = self.NO_PATTERN
# self.pattern_fore_colour = 0x40
# self.pattern_back_colour = 0x41

实例:

# 填充设置
pat = my_style_1.pattern
# 打开填充
pat.pattern = 1
# 填充前景色、紫色
pat.pattern_fore_colour = 0x14
# 填充背景色、紫色
pat.pattern_back_colour = 0x14

效果图:


注:xlwt 模块好像只提供了颜色填充设置方法,图案填充方法未提供。颜色索引见字体颜色索引。

6、单元格保护

建立保护对象,设置属性:

可设置项(默认设置):

# self.cell_locked = 1
# self.formula_hidden = 0

实例:

# 设置单元格锁定
protection.cell_locked = 1
# 设定隐藏单元格内公式
protection.formula_hidden = 1
# 只有在sheet表设置为保护时才有效
work_sheet.set_protect(1)

注:只有在sheet表设置为保护时才有效,(效果可参考第二节表格保护内容)。

结尾:

以上就是本篇全部内容,感谢阅读。

下一篇博客内容为:根据 xlwt 模块的一些方法,用面向对象的思想,自写一个类实现:按行按列写入、自定义格式方法、自动调整列宽等 等功能。

【Python与Office】专栏

该专栏会对 Python 的第三方模块,如:xlwt,xlrd,python-docx等,操作 Office 办公软件(Word Excel PPT)的方法进行详细讲解。同时也会搭配一些实例演练,一方面强化知识点的理解与运用,另一方面也希望能起到,引导读者进行思考:如何用 python 提高 offic 办公软件办公效率的作用。

感兴趣的朋友,可以点个 关注收藏 。如在博客中遇到任何问题或想法,可留言或私信。

创作不易,你的支持是我最大的动力,感谢 !

Python xlwt 操作 excel 表格基础(三):单元格格式、字体格式、对齐方式、边框及填充等相关推荐

  1. python中xlwt的局限,Python xlwt 生成Excel和设置特定单元格不可编辑

    请看我另一篇生成Excel的文章(推荐) xlwt 这是一个供开发人员用来生成与Microsoft Excel 95到2003版兼容的电子表格文件的库. 包本身是纯Python,不依赖于标准Pytho ...

  2. Python xlrd 读取 Excel 表格基础(一):获取sheet、行、列对象,读取数据类型等

    Python xlrd 读取 Excel 表格基础 一:按行.按列读取Excel数据内容 前言: 1.获取工作簿.sheet对象 2.获取sheet表中行.列对象 3.读取sheet对象中所有数据 4 ...

  3. 计算机基础知识教程excel单元格拆分,电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里...

    电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里 当我们在使用电脑的时候,可以下载excel软件来处理数据文件,那么如果想要将一个单元格中的内容拆分到不同的单元格中的话,应如何操作呢?接 ...

  4. python xlwt操作excel

    python xlwt操作excel posted on 2018-04-18 14:46 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs ...

  5. 如何通过VB合并Excel单元格以及设置Excel行高?VB创建Excel表格,合并单元格,生成图形等操作

    如何通过VB合并Excel单元格以及设置Excel行高? 例如:我想把第一列的第4,5,6,7行合并...我在怎样让合并单元格里的字居中,怎样改变字体. 请不吝赐教... ============== ...

  6. html合并的列内容不居中显示,表格不能合并居中 excel表格不能合并单元格怎么办...

    Excel 单元格不能合并了,合并单元格选项是灰色的无法合并单元格,主要是因为几个单元格之间套用了格式,所以无法合并单元格. 具体的解决方法如下: 选中相应的单元格,然后,点击工具栏上"设计 ...

  7. sum多个字段的值相加_excel表格指定数据求和-怎么让EXCEL表格多个单元格里的数值相加求和...

    怎么让EXCEL表格多个单元格里的数值相加求和 如果提取2010年的数据和,可以这样 用一个笨方法吧,在年份A列后,插入一个辅助列比如说B列,用YEAR()提取A中的数据的年,然后隐藏,下面公该明白了 ...

  8. 为什么有时候双击excel表格里面的单元格的时候会跳到其它地方?

    为什么有时候双击excel表格里面的单元格的时候总会跳到其它地方? 原因:双击时鼠标在两个单元格的边框或是四个单元格的交叉点上. 解决方法:关闭"启用填充柄和单元格拖放"功能,选项 ...

  9. PyQT5 (四十三) 在 QTableWidget 表格中设置单元格的字体和颜色 的案例

    在 QTableWidget 表格中设置单元格的字体和颜色 的案例 import sysfrom PyQt5 import QtPrintSupport, QtGui from PyQt5.QtCor ...

  10. 【转】经典!python中使用xlrd、xlwt操作excel表格详解

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

最新文章

  1. 更改远程桌面使用的默认端口
  2. 2016阿里前端笔试题学习
  3. Qmake变量variable
  4. 漫画:什么是MD5算法
  5. 如何在Word里面自动生成目录
  6. python神奇的小海龟_Python笔记_第一篇_面向过程_第一部分_8.画图工具(小海龟turtle)...
  7. plt.subplots中的ax = ax.flatten()
  8. Factors of Factorial AtCoder - 2286 (N的阶乘的因子个数)(数论)
  9. DoTween NGUI bug
  10. Git笔记-Connection reset by 13.229.188.59 port 22 fatal: Could not read from remote repository.
  11. 读书笔记:调试软件 张银奎
  12. java运行方法_java程序怎么运行?java程序运行方法
  13. java 噪声信道模型_噪声信道模型zz
  14. 打游戏买什么手机好?rog3性能强 网速稳!
  15. 【Python数据处理篇——DataFrame数据准备】DataFrame的创建、增删改查、数据导入等
  16. hadoop集群搭建完整教程,java电商项目面试技巧
  17. 关于*.md文件打开的问题及图片丢失
  18. 第一次ACM赛后总结及感悟
  19. 先做接口测试还是功能测试
  20. OSChina 周六乱弹 ——通常他们这么修复的bug,我都接受不了

热门文章

  1. 自然语言处理 朴素贝叶斯文本分类
  2. [转]performSelector延时调用导致的内存泄露
  3. Servlet-JSP-课堂笔记
  4. JavaWeb——动态 web 资源开发
  5. 【翻译】torch.device的使用举例
  6. java+js+html 实现webSocket广播及私聊
  7. java:窗体里的标签(图片标签)
  8. 误格式化硬盘数据怎么恢复好
  9. Cocos2d-Html5--打怪升级之路
  10. 清华本科结业生两年的工作经历-献给游走在黑暗里的清华人