利用Python语言以及xlwt实现表格的自动写入并设置各种样式

1. 导入xlwt模块,创建表格及其工作表

workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet('sheet', cell_overwrite_ok=True)  # 可以创建多个工作表以及设置任意的工作表名

2. 样式设置

初始化样式

style = xlwt.XFStyle()
# 建立单元格数据类型,数值类型,默认为:'General'
style.num_format_str = '0'

数值类型索引如下

# 单元格数据类型  #######################################################
''''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.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 = xlwt.Font()  # 为样式创建字体
# 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
font.name = name
# 字体大小
font.height = 20 * n  # 如10号字体,n=10
# 设置字体颜色、蓝色
font.colour_index = 0x0C
# 设置加粗
font.bold = True
# 字体中是否有横线struck_out
font.struck_out =True
# 设置斜体
font.italic = True
# 设置删除线
font.struck_out = True
# 设置轮廓
font.outline = True
# 设置阴影
font.shadow = True
# 设置字体上下标、上标
# font.escapement = 1
# 设置下划线、双层下划线,当值为11时。填充颜色就是蓝色
font.underline = 2
# 设置字符集、GBK
font.charset = 0x86
# 定义字体格式
style.font = font

字体颜色设置如下选择

# 颜色索引  #######################################################
"""
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
"""

说明

这里的参数变量使用了十六进制,可以将其输入十进制,比如想设置字体的颜色为black,可以使用 0x08也可以 8
下同:有些可能使用了八进制,可以查看函数说明。(十六进制以'0x'开头;八进制以'0'开头)

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

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

除了可以设置单元格格式外,还可以通过_search_key()方法来获取单元格样式信息。
如:(以下其他样式信息的获取方法相同)

font_info = font._search_key()
2.2 borders边框格式

默认设置:

# 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 = xlwt.Borders()
borders.left =NO_LINE
borders.left = xlwt.Borders.THIN# NO_LINE: 官方代码中NO_LINE所表示的值为0,没有边框# THIN: 官方代码中THIN所表示的值为1,边框为实线
# 左边框 细线
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
# 定义格式
style.borders = borders

边框线型索引:

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
2.3 pattern单元格的颜色背景颜色设置

默认设置为:

# self.pattern = self.NO_PATTERN  # 无填充
# self.pattern_fore_colour = 0x40
# self.pattern_back_colour = 0x41

自定义设置:

pattern = xlwt.Pattern()
# 设置背景颜色的模式(打开填充)
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pat.pattern = 1
# 两种模式
# NO_PATTERN      = 0x00
# SOLID_PATTERN   = 0x01
# 填充前景色、紫色
pat.pattern_fore_colour = 0x14   # 看上述的颜色索引
# 填充背景色、紫色
pat.pattern_back_colour = 0x14
style.pattern = pattern
2.4 alignment对齐方式设置

默认设置

# 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 = xlwt.Alignment()  # 居中
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
# 旋转方向,设置旋转方向45
alignment.rota = 45
# 自动缩进设置
alignment.shri = 1
style.alignment = alignment  # 设定样式

其他对齐方式索引:

# 水平对齐方式
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
2.5 单元格保护设置

默认设置:

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

自定义设置:

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

3. 写入表格

3.1 直接写入

参数:row:行; col:列; element:写入元素; style:样式设置

worksheet.write(row, col, element, style)   # 参数:row:行; col:列; element:写入元素; style :样式设置
3.2 合并写入

参数:row_start:开始行;row_end:结束行; col_start:开始列; col_end:结束列; element:写入元素; style:样式设置

worksheet.write_merge(row_start, row_end, col_start, col_end, element, style)

4. 设置单元格的列宽度

for i in range(ncol):   # ncol:列数worksheet.col(i).width = 256 * width  # 设置宽度

也可以worksheet.col(i).width对指定某列设置

5. 保存写入内容

workbook.save(r'D:\demo.xls')

扩展:通过函数来设定不同的样式

# 样式设置
def set_Style(name,size,color,borders_size,color_fore,blod=False):style = xlwt.XFStyle()  # 初始化样式# 字体font = xlwt.Font()font.name = namefont.height = 20 * size  # 字号font.bold = blod  # 加粗font.colour_index = color  # 默认:0x7FFF 黑色:0x08style.font = font# 居中alignment = xlwt.Alignment()  # 居中alignment.horz = xlwt.Alignment.HORZ_CENTERalignment.vert = xlwt.Alignment.VERT_CENTERstyle.alignment=alignment# 边框borders = xlwt.Borders()borders.left = xlwt.Borders.THINborders.right = xlwt.Borders.THINborders.top = xlwt.Borders.THINborders.bottom = borders_size  # 自定义:1:细线;2:中细线;3:虚线;4:点线style.borders = borders# 背景颜色pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 设置背景颜色的模式(NO_PATTERN; SOLID_PATTERN)pattern.pattern_fore_colour = color_fore  # 默认:无色:0x7FFF;黄色:0x0D;蓝色:0x0Cstyle.pattern = patternreturn style

使用

book_title1 = ['沥青路面病害明细表(标准)']
book_title2 = ['路线编码','路幅','车道','路面类型','图片桩号','图片序号', '病害标准判别号', '病害标准判别']
# 合并单元格写入表头
worksheet_ori.write_merge(0, 0, 0, 8, book_title1, set_Style('宋体',14,0x7FFF,0,0x7FFF,blod=True))
# 写入指定的副表头
for _num, _title in enumerate(book_title2):worksheet_ori.write(1, _num, _title, set_Style('宋体',12,0x08,2,0x7FFF,blod=True))


python的xlwt库的使用暂时写到这,后面会继续完善其他的用法。
以下链接的博主写得也非常详细!
参考链接:https://blog.csdn.net/zhouz92/article/details/106833511

【Python】xlwt写入excel表格的样式设置(字体;对其方式;边框;背景颜色;合并写入等)相关推荐

  1. 在Excel表格中如何设置字体随单元格大小变化

    在Excel表格中如何设置字体随单元格大小变化 目录 在Excel表格中如何设置字体随单元格大小变化 1.选中单元格,鼠标右键点击"设置单元格式" ​2.在"对齐&quo ...

  2. lisp对excel其他行列写入_【极简Python 自动化办公】Python写入Excel表格

    [极简Python 自动化办公]Python写入Excel表格 [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. ...

  3. python 列表写入excel_python怎么读取和写入excel表格

    最近在做一些数据处理和计算的工作,因为数据是以.CSV格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看 ...

  4. python列表逐行写入excel_python表格数据到excel-想问下python3怎么将列表数据逐行写入excel表格呢?...

    如何用python将数据写入excel表格 简介绍一下这两个库,先说xlrd,这个Excel比较,各种方法使用起来方便: bk = xlrd.open_workbook('your.xls') sh ...

  5. python BeautifulSoup爬取豆瓣电影top250信息并写入Excel表格

    豆瓣是一个社区网站,创立于2005年3月6日.该网站以书影音起家,提供关于书籍,电影,音乐等作品信息,其描述和评论都是由用户提供的,是Web2.0网站中具有特色的一个网站. 豆瓣电影top250网址: ...

  6. python如何把数据写入excel表格中指定列

    Python可以使用openpyxl库来将数据写入Excel表格中指定的列.如果要将数据写入指定的列中,可以使用如下代码:worksheet.write(row_index, column_index ...

  7. python3读取excel数据-Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python ...

  8. Python3读取和写入excel表格数据

    目录 一.python读取excel表格数据 1.读取excel表格数据常用操作 2.xlrd模块的主要操作 3.读取单元格内容为日期时间的方式 4. 读取合并单元格的数据 二.python写入exc ...

  9. python3 写入excel表格数据_Python3读取和写入excel表格数据

    目录 python操作excel主要用到 xlrd和xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.pytho ...

  10. python处理excel表格数据-零基础使用Python读写处理Excel表格的方法

    引 由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作. 安装库Python环境 首先当然是配环境,不过选Python的一个重要 ...

最新文章

  1. Nginx-场景实践篇
  2. 反积分饱和 程序_非常通俗易懂的PID控制(2)--积分饱和
  3. spring statemachine的企业可用级开发指南1-说些废话
  4. 01-缓存一致性---基础知识
  5. java两个很大的数相加_两个超大数的相加
  6. 我最近在学微信小程序开发,一起吗?
  7. 离职证明(解除劳动合同书)是否会毁你一生?
  8. 在java中如何把字符串转换成时间格式?
  9. MacBook Pro 16英寸样机模型正面视图psd素材
  10. SQL Server(三):Select语句
  11. Python 文件(文件夹)匹配(glob模块)(转载)
  12. I.MX6 make menuconfig进入x86模式
  13. 电子计算机 电子工程 职称,电子信息工程师职称评定
  14. mysql间隙锁_解决MySQL可重复读——详解间隙锁
  15. 微信加好友CALL地址 3.4.5.27
  16. 用Pycharm创建一个职位管理系统
  17. ora01950-对象空间无权限
  18. DenseBox Unifying Landmark Localization with End to End Object Detection
  19. Android项目实战--【谁是歌手-逻辑实现篇】
  20. 全基因DNA甲基化检测“金标准”--- 改进版简化基因组甲基化测序

热门文章

  1. Unable to establish SSL connection.
  2. java.nio.channels.NotYetConnectedException: null
  3. 解决手机QQ或微信已开通邮件提醒,但收到邮件仍不提醒的问题
  4. css实现手风琴图片特效
  5. 计算机课反思的作文600字,中考反思作文600字6篇
  6. PropertyBeanUtils.copyProperties(dest, orig)
  7. 基于医疗知识图谱的项目构建学习总结(一)—项目构建环境搭建及爬取数据部分
  8. 小程序云开发点赞案例实现及环境vant插件配置等问题
  9. 我想用人工智能留住父亲
  10. 干货丨让你更容易影响别人的 52 个小技巧