python xlsxwriter 学习笔记(二)

时间:2024-03-21 13:30:30

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

python xlsxwriter 学习笔记(二)

# 设置单元格锁定状态
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)

python xlsxwriter 学习笔记(二)

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

# 为单元格中的文本打开文本换行
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)

python xlsxwriter 学习笔记(二)

设置单元格中的文本旋转 :旋转角度是-90到90度之间,同时支持270度。python xlsxwriter 学习笔记(二)

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

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)

python xlsxwriter 学习笔记(二)

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

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)

python xlsxwriter 学习笔记(二)

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

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

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

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

参数: styleint) - 边框样式索引。默认值为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 / - . / - .

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

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