xlsxwriter 学习笔记之单元格类

xlsxwriter是python中操作excel的非常全面高效的库。它可以帮助我们高效快速,大批量的,自动化的操作excel,可以帮助我们进行写入操作,可以写数据,画图能完成大部分常用的excel操作,如果想要读取excel则需要另一个库xlrd。对于日常进行大量的excel的数据分析和处理工作的人来说,这个库可以帮助我们减少大量的重复性工作,实现自动化。有了这个库,python就可以在一些工作上替代VBA,让我们的办公工具更加单一简单。因为公司需要,本人开始学习了解。

介绍用于在Excel中格式化单元格的方法和属性。

可以格式化的单元格的属性包括: 字体,颜色,图案,边框,对齐和数字格式

1. 创建Format对象

通过调用工作簿 add_format() 方法创建格式对象。

cell_format1 = workbook.add_format()       # 之后设置属性
cell_format2 = workbook.add_format(props)  # 创建对象时设置属性

设置格式属性: 有两种方法:使用对象接口或将属性设置为构造函数中键/值对的字典。

# 第一种
cell_format = workbook.add_format()
cell_format.set_bold()
cell_format.set_font_color('red')
# 第二种
cell_format = workbook.add_format({'bold': True, 'font_color': 'red'})
# 构造了Format对象并且已经设置了它的属性,它就可以作为参数传递给工作表write方法
worksheet.write(0, 0, 'Foo', cell_format)
worksheet.write_string(1, 0, 'Bar', cell_format)
worksheet.write_number(2, 0, 3,     cell_format)
worksheet.write_blank (3, 0, '',    cell_format)
# 也可以传递给工作表set_row()和set_column() 方法,以定义行或列的默认格式设置属性
worksheet.set_row(0, 18, cell_format)
worksheet.set_column('A:D', 20, cell_format)

单元格格式的默认值情况

cell_format = workbook.add_format()
cell_format.set_bold()      # 打开
cell_format.set_bold(True)  # 一样打开
# 由于大多数属性在默认情况下已经关闭,因此通常不需要将其关闭。
cell_format.set_bold(False)  # 关闭

2.单元格格式方法和属性

类别 描述 属性 方法名称
字形 字体类型 'font_name' set_font_name()
字体大小 'font_size' set_font_size()
字体颜色 'font_color' set_font_color()
加粗 'bold' set_bold()
斜体 'italic' set_italic()
强调 'underline' set_underline()
三振出局 'font_strikeout' set_font_strikeout()
标/下标 'font_script' set_font_script()
数字格式 'num_format' set_num_format()
保护 锁定单元格 'locked' set_locked()
隐藏公式 'hidden' set_hidden()
对准 水平对齐 'align' set_align()
垂直对齐 'valign' set_align()
旋转 'rotation' set_rotation()
文本换行 'text_wrap' set_text_wrap()
阅读顺序 'reading_order' set_reading_order()
文本最后 'text_justlast' set_text_justlast()
中心对面 'center_across' set_center_across()
缩进 'indent' set_indent()
缩小以适合 'shrink' set_shrink()
图案 单元格模式 'pattern' set_pattern()
背景颜色 'bg_color' set_bg_color()
前景色 'fg_color' set_fg_color()
边界 单元格边界 'border' set_border()
底部边界 'bottom' set_bottom()
顶部边界 'top' set_top()
左边界 'left' set_left()
右边界 'right' set_right()
边框颜色 'border_color' set_border_color()
底部的颜色 'bottom_color' set_bottom_color()
顶部的颜色 'top_color' set_top_color()
左边的颜色 'left_color' set_left_color()
右边的颜色 'right_color' set_right_color()
# 指定单元格格式中使用的字体
cell_format.set_font_name('Times New Roman')
# 设置单元格格式的字体大小
cell_format.set_font_size(30)
# 设置字体颜色
cell_format.set_font_color('red')
worksheet.write(0, 0, 'wheelbarrow', cell_format)
# 颜色可以是Html样式#RRGGBB字符串或有限数量的命名颜色。
# 设置字体的粗体属性
cell_format.set_bold()
# 设置字体的斜体属性
cell_format.set_italic()
# 设置格式的下划线属性
cell_format.set_underline()
# 设置字体的删除线属性
cell_format.set_font_strikeout()
# 设置字体的上标/下标属性,1 =上标, 2 =下标
cell_format.set_font_script()
# 设置单元格的数字格式
cell_format1 = workbook.add_format()
cell_format2 = workbook.add_format()
cell_format1.set_num_format('d mmm yyyy')
cell_format2.set_num_format(0x0F)
cell_format01.set_num_format('0.000')
worksheet.write(1, 0, 3.1415926, cell_format01)       # -> 3.142
cell_format02.set_num_format('#,##0')
worksheet.write(2, 0, 1234.56, cell_format02)         # -> 1,235
cell_format03.set_num_format('#,##0.00')
worksheet.write(3, 0, 1234.56, cell_format03)         # -> 1,234.56
cell_format04.set_num_format('0.00')
worksheet.write(4, 0, 49.99, cell_format04)           # -> 49.99
cell_format05.set_num_format('mm/dd/yy')
worksheet.write(5, 0, 36892.521, cell_format05)       # -> 01/01/01
cell_format06.set_num_format('mmm d yyyy')
worksheet.write(6, 0, 36892.521, cell_format06)       # -> Jan 1 2001
cell_format07.set_num_format('d mmmm yyyy')
worksheet.write(7, 0, 36892.521, cell_format07)       # -> 1 January 2001
cell_format08.set_num_format('dd/mm/yyyy hh:mm AM/PM')
worksheet.write(8, 0, 36892.521, cell_format08)       # -> 01/01/2001 12:30 AM
cell_format09.set_num_format('0 "dollar and" .00 "cents"')
worksheet.write(9, 0, 1.87, cell_format09)            # -> 1 dollar and .87 cents
# 附加条件的格式化
cell_format10.set_num_format('[Green]General;[Red]-General;General')
worksheet.write(10, 0, 123, cell_format10)  # > 0 Green
worksheet.write(11, 0, -45, cell_format10)  # < 0 Red
worksheet.write(12, 0,   0, cell_format10)  # = 0 Default color
# 设置单元格锁定状态
locked = workbook.add_format()
locked.set_locked(True)
unlocked = workbook.add_format()
locked.set_locked(False)
worksheet.protect()
worksheet.write('A1', '=1+2', locked)
worksheet.write('A2', '=1+2', unlocked)
# 隐藏单元格中的公式
hidden = workbook.add_format()
hidden.set_hidden()
worksheet.protect()
worksheet.write('A1', '=1+2', hidden)

设置单元格中数据的对齐方式: 有水平和垂直两个方向。

水平方向
left
center
right
fill
justify
center_across
distributed
垂直方向
top
vcenter
bottom
vjustify
vdistributed
cell_format = workbook.add_format()
cell_format.set_align('center')
cell_format.set_align('vcenter')
worksheet.set_row(0, 70)
worksheet.set_column('A:A', 30)
worksheet.write(0, 0, 'Some Text', cell_format)

设置单元格中文本数据换行:

# 为单元格中的文本打开文本换行
cell_format = workbook.add_format()
cell_format.set_text_wrap()
worksheet.write(0, 0, "Some long text to wrap in a cell", cell_format)
# 如果希望控制文本的位置,可以在字符串中添加换行符:
worksheet.write(2, 0, "It's\na bum\nwrap", cell_format)

设置单元格中的文本旋转 : 旋转角度是-90到90度之间,同时支持270度。

设置单元格中的文本缩进:

cell_format1 = workbook.add_format()
cell_format2 = workbook.add_format()
cell_format1.set_indent(1)
cell_format2.set_indent(2)
worksheet.write('A1', 'This text is indented 1 level',  cell_format1)
worksheet.write('A2', 'This text is indented 2 levels', cell_format2)

设置缩小文本: 接下来,可以对文本设置缩小以适合单元格。

cell_format = workbook.add_format()
cell_format.set_shrink()
worksheet.write(0, 0, 'Honey, I shrunk the text!', cell_format)

设置单元格背景图案: 最常见的图案是1,它是背景颜色的实心填充。 format.set_pattern()

设置单元格背景图案颜色:

cell_format = workbook.add_format()
cell_format.set_pattern(1)  # 选择一种图案的模式,1是实心填充
cell_format.set_bg_color('green')
worksheet.write('A1', 'Ray', cell_format)

设置单元格中前景图案的颜色: set_fg_color()

参数: color string ) - 单元格字体颜色。

颜色可以是Html样式 #RRGGBB 字符串或有限数量的命名颜色。 请参阅 使用颜色

设置单元格边框样式: set_border()

参数: style int ) - 边框样式索引。默认值为1。

可以使用以下方法使用相同的参数配置各个边框元素:

单元格边框由底部,顶部,左侧和右侧的边框组成。可以使用 set_border() 或单独使用上面显示的相关方法调用将它们设置为相同的值。

以下显示按XlsxWriter索引号排序的边框样式:

Index Name Weight Style
0 None 0
1 Continuous 1 -----------
2 Continuous 2 -----------
3 Dash 1 - - - - - -
4 Dot 1 . . . . . .
5 Continuous 3 -----------
6 Double 3 ===========
7 Continuous 0 -----------
8 Dash 2 - - - - - -
9 Dash Dot 1 - . - . - .
10 Dash Dot 2 - . - . - .
11 Dash Dot Dot 1 - . . - . .
12 Dash Dot Dot 2 - . . - . .
13 SlantDash Dot 2 / - . / - .

之后我们也可以对上下左右四个边框,设置其颜色和样式,接口名称在最前面的表格里面有。设置方法相同。

上述内容均来自官方文档,读者也可直接阅读 官方文档。

xlsxwriter 学习笔记之单元格类xlsxwriter是python中操作excel的非常全面高效的库。它可以帮助我们高效快速,大批量的,自动化的操作excel,可以帮助我们进行写入操作,可以写数据,画图能完成大部分常用的excel操作,如果想要读取excel则需要另一个库xlrd。对于日常进行大量的excel的数据分析和处理工作的人来说,这个库可以帮助我们减少大量的重复性工作,实现自动...
资源名称: Python 学习 笔记 版内容简介: Python 学习 笔记 版雨痕的 python 学习 笔记 , 很好的 学习 资料,想 学习 python 的朋友可以收藏下。   资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
import xlsxwriter # 导入模块 workbook = xlsxwriter .Workbook('C:Users/Jllf/Desktop/my_excel.xlsx') # 新建excel表,可写入要保存的路径 worksheet = workbook.add_worksheet() # 新建sheet,也可设置为sheet的名称为"sheet1"等自定义字段 headings = ['时间', "姓名", '年龄'] # 设置表头数据 data = font_name = 'Arial' # 字体 font_size = 11 # 字号 font_color = 0x0 # 颜色 bold = True # 加粗 italic = True # 斜体 underline = 0 #