python xlsxwriter 学习笔记(二)

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()

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

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

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

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

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

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

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

IndexNameWeightStyle
0None0 
1Continuous1-----------
2Continuous2-----------
3Dash1- - - - - -
4Dot1. . . . . .
5Continuous3-----------
6Double3===========
7Continuous0-----------
8Dash2- - - - - -
9Dash Dot1- . - . - .
10Dash Dot2- . - . - .
11Dash Dot Dot1- . . - . .
12Dash Dot Dot2- . . - . .
13SlantDash Dot2/ - . / - .

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

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

 

 

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值