前言:个人发现前面的那篇文章太冗余,现在直接上代码,注释我直接些在代码里面,更方便理解。
"""
author: ml_YSY
date: 2021.03.27
effect: study xlwt 写入工作表功能
"""
import xlwt
"""
写入数据格式化设置
xlwt.XFStyle() # 初始化样式
六种格式:
self.num_format_str = '' #
self.font = Formatting.Font() # 字体
self.alignment = Formatting.Alignment() # 对齐方式
self.borders = Formatting.Borders() # 边框样式
self.pattern = Formatting.Pattern() # 填充
self.protection = Formatting.Protection() # 保护
"""
titleStyle = xlwt.XFStyle()
"""
定义字体
xlwt.Font() # 字体样式设置
"""
titleFont = xlwt.Font()
titleFont.name = "宋体" # 字体名称
titleFont.bold = True # 字体加粗,默认False
titleFont.height = 11 * 20 # 设置字体大小,11代表字号,20是衡量单位
"""
字体颜色设置【重点】
colour_index # 使用此方法设置颜色
颜色编码,系统提供的一套颜色编码表,查找colour_map,在Style.py文件中的_colour_map_text进行查看。
colour_index 的值,可以使编码,也可以是【编码的下标】
常用颜色:
黑色:0x08
红色:0x0A
黄色:0x0D
蓝色:0x0C
绿色:0x11
白色:0x09
下面两个代码效果相同
"""
titleFont.colour_index = 0x08
# titleFont.colour_index = 1
"""
将字体样式传递给初始化的样式或者叫格式化的样式上
"""
titleStyle.font = titleFont
"""
设置对齐
xlwt.Alignment() # 对齐方式设置
特有的编码表,自行查找Formatting.py文件,操作:选中对应的方法【Ctrl+F】,左键点击,进入Formatting.py,之后自行查找。
horz # 水平对齐方式
常用:
左对齐 0x01
居中对齐 0x02
右对齐 0x03
vert # 垂直对齐方式
常用:
顶端对齐 0x00
居中对齐 0x01
底部对齐 0x02
"""
cellAlign = xlwt.Alignment()
cellAlign.horz = 0x02
cellAlign.vert = 0x01
titleStyle.alignment = cellAlign
"""
边框样式设置
xlwt.Borders() # 边框样式设置
分四个方位:
top
right
bottom
right
边框线样式:
NO_LINE = 0x00
THIN = 0x01
MEDIUM = 0x02
DASHED = 0x03
DOTTED = 0x04
THICK = 0x05
DOUBLE = 0x06
HAIR = 0x07
可以如下面这样书写,也可以写编码,前面的样式也一样,自己喜欢怎么写,就怎么来。
"""
borders = xlwt.Borders()
borders.bottom = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DOTTED
titleStyle.borders = borders
"""
背景颜色:
"""
nameStyle = xlwt.XFStyle()
bgcolor = xlwt.Pattern()
bgcolor.pattern = xlwt.Pattern.SOLID_PATTERN # 设置颜色的取值模式
bgcolor.pattern_fore_colour = 22
nameStyle.pattern = bgcolor
"""
创建工作簿
"""
wb = xlwt.Workbook()
"""
创建工作表
add_sheet('') # 添加工作表及其名称
"""
ws = wb.add_sheet('SHEET1')
"""
填充数据
合并合并行或者列使用:
ws.write_merge(self, r1, r2, c1, c2, label="", style=Style.default_style)
r1 # 行的索引,起始位置
r2 # 行的索引,结束位置
c1 # 列的索引,起始位置
c2 # 列的索引,结束位置
label="" # 填入的内容
style=Style.default_style # 此区域样式设置
"""
ws.write_merge(0, 2, 0, 2, "全年工资表", style=titleStyle)
"""
直接添加数据,不合并行或者列
ws.write(self, r, c, label="", style=Style.default_style)
r # 行的索引
c # 列的索引
label="" # 填入的内容
style=Style.default_style # 此区域样式设置
enumerate(data) # 返回数据同时包含索引及其值
"""
data = [
("姓名", "年龄", "工资"),
("小名", "28", "19990"),
("小李", "33", "32000"),
("小九", "50", "80000")]
for i, item in enumerate(data):
for j, val in enumerate(item):
if j == 0:
ws.write(i+3, j, val, nameStyle)
else:
ws.write(i+3, j, val)
"""
数据保存
wb.save(" ") # 保存数据,输出的工作簿的路径和名称
"""
wb.save("C:/Users/Shinelon/Desktop/T2test.xlsx")
"""
最后补充内容:
写入图片:
ws.insert_bitmap(self, filename, row, col, x=0, y=0, scale_x=1, scale_y=1)
filename # 写入图片路径
row # 所在行的位置
col # 所在列的位置
"""