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 | / - . / - . |
之后我们也可以对上下左右四个边框,设置其颜色和样式,接口名称在最前面的表格里面有。设置方法相同。
上述内容均来自官方文档,读者也可直接阅读官方文档。