-
python xlwt模块简介
一、基础类介绍
1、工作簿类Workbook简介:
import xlwt class Workbook(object0): ''' 工作簿类,使用xlwt创建excel文件时,首先要实例化此类的对象 ''' def __init__(self, encoding='ascii', style_compression=0): pass def add_sheet(self,sheetname, cell_overwrite_ok=False): ''' 在工作簿中创建工作表 :param sheetname: 工作表的名字 :param cell_overwrite_ok: 如果值为True,则可以像单元格中多次写入数据(覆盖写),相当于修改单元格的数据,如果值为False则多次写入会引发异常。 :return: 返回一个工作表对象(也就是Worksheet()对象) ''' pass def save(self,filename_or_stream): ''' 将文件以Excel的格式进行保存 :param filename_or_stream:Excel的文件名 :return: ''' pass
2、工作表类WorkSheet简介
class Worksheet(object): ''' 工作表类 ''' def __init__(self, sheetname, parent_book, cell_overwrite_ok=False): ''' 实例化对象的参数 :param sheetname: 工作表名 :param parent_book: 工作簿对象 :param cell_overwrite_ok:覆盖写单元格(如果为True可以覆盖写单元格,为False如果覆盖写会抛异常) ''' pass def write(self, r, c, label="", style=xlwt.Style.default_style): ''' 将数据写入工作表的单元格中 :param r: row的缩写,表示行,从0开始计数。 :param c: column的缩写,表示列,从0开始计数。 :param label:要写入的数据(支持的数据类型:int,long,float,字符串,日期,TRUE,FALSE,xlwt.Formula等) :param style:表格样式(样式类:Font, Alignment, Borders, Pattern, Protection。样式函数:easyxf, easyfont, add_palette_colour) :return: ''' pass
3、创建一个不带样式的基础Excel表
import xlwt # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 向工作表中添加数据(参数对应 行, 列, 值) for i in range(3): for j in range(3): worksheet.write(i,j, label = 'test_' + str(j),) # 保存数据到硬盘 workbook.save(r'i:\Excel_test.xls')
最终我们会看到如下图所示:
二、xlwt高级应用
Font:用于设置字体,字体大小,字体颜色,是否加粗,斜体,字体带下划线,删除线等。
Alignment:用于设置字体水平和垂直对齐、文本换行、缩进、方向/旋转、文本方向等。
Border:表格边框设置。
Background:单元格背景颜色。
1、字体类Font简介
class Font(object): def __init__(self): # twip = 1/20 of a point = 1/1440 of a inch # usually resolution == 96 pixels per 1 inch # (rarely 120 pixels per 1 inch or another one) self.height = 0x00C8 # 200: this is font with height 10 points 字体高度 self.italic = False # 斜体 self.struck_out = False # 删除线 self.outline = False # 字体轮廓(没发现有什么变化) self.shadow = False # 字体阴影 self.colour_index = 0x7FFF # 这个字体颜色貌似有限制,没太搞懂,范围是0x00到0x35之间有颜色,超过这个范围都是黑色,最大不能超过0xFFFF否则会报错。 self.bold = False # 粗体 self._weight = 0x0190 # 0x02BC gives bold font # 字体宽度 self.escapement = self.ESCAPEMENT_NONE #字体在单元格中位置,0x00正常,0x01字体上标,0x02字体下标。 self.underline = self.UNDERLINE_NONE # 默认字体不带下划线,0x01单下划线,0x02和0x01差不多,0x21双下划线,0x02和0x21差不多 self.family = self.FAMILY_NONE # 不清楚做什么的,默认没有,0x01罗马家族,0x02瑞士家族,0x03现代家族,0x04脚本家族,0x05描述家族 self.charset = self.CHARSET_SYS_DEFAULT # 字符集,字符集选项 CHARSET_ANSI_LATIN = 0x00 CHARSET_SYS_DEFAULT = 0x01 CHARSET_SYMBOL = 0x02 CHARSET_APPLE_ROMAN = 0x4D CHARSET_ANSI_JAP_SHIFT_JIS = 0x80 CHARSET_ANSI_KOR_HANGUL = 0x81 CHARSET_ANSI_KOR_JOHAB = 0x82 CHARSET_ANSI_CHINESE_GBK = 0x86 CHARSET_ANSI_CHINESE_BIG5 = 0x88 CHARSET_ANSI_GREEK = 0xA1 CHARSET_ANSI_TURKISH = 0xA2 CHARSET_ANSI_VIETNAMESE = 0xA3 CHARSET_ANSI_HEBREW = 0xB1 CHARSET_ANSI_ARABIC = 0xB2 CHARSET_ANSI_BALTIC = 0xBA CHARSET_ANSI_CYRILLIC = 0xCC CHARSET_ANSI_THAI = 0xDE CHARSET_ANSI_LATIN_II = 0xEE CHARSET_OEM_LATIN_I = 0xFF self.name = 'Arial' # 字体
1.1创建一个改变默认字体样式的Excel
import xlwt # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 实例化表格样式对象 xstyle = xlwt.XFStyle() # 设置字体样式 xfont = xlwt.Font() xfont.colour_index = 0x04 # 设置字体颜色 xfont.bold = True # 字体加粗 xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小) xfont.underline = 0x01 # 设置字体带下划线 xfont.name = '华文彩云' # 设置字体 # 将字体对象赋值给样式对象 xstyle.font = xfont for i in range(3): for j in range(3): # 向工作表中添加数据(参数对应 行, 列, 值,样式) worksheet.write(i,j, label = 'test_' + str(j),style=xstyle) # 保存数据到硬盘 workbook.save(r'i:\2.xls')
如果一切顺利,打开2.xls会看到如下:
2、 Alignment类简介
class Alignment(object): # 字体水平设置 HORZ_GENERAL = 0x00 # 正常显示 HORZ_LEFT = 0x01 # 左对齐 HORZ_CENTER = 0x02 # 居中 HORZ_RIGHT = 0x03 # 右对齐 HORZ_FILLED = 0x04 # 填充单元格 HORZ_JUSTIFIED = 0x05 # 显示在合理的位置 HORZ_CENTER_ACROSS_SEL = 0x06 # Centred across selection我觉得这个应该是显示在单元格的正当中,但测试发现和0x02效果一样只能是水平居中不能垂直居中 HORZ_DISTRIBUTED = 0x07 # Distributed汉字时字体是水平 平均分布在表格中,如果是英文字母则是水平居中显示。 # 垂直设置 VERT_TOP = 0x00 # 字体在单元格顶部 VERT_CENTER = 0x01 # 字体垂直居中 VERT_BOTTOM = 0x02 # 字体在单元格底部 VERT_JUSTIFIED = 0x03 # Justified (BIFF5-BIFF8X)在合理的位置显示 VERT_DISTRIBUTED = 0x04 # Distributed (BIFF8X)有垂直居中的效果,如果字体超过单元格范围会垂直分布显示 # 字体方向(没用明白哈哈) DIRECTION_GENERAL = 0x00 # BIFF8X 正常显示 DIRECTION_LR = 0x01 DIRECTION_RL = 0x02 ORIENTATION_NOT_ROTATED = 0x00 ORIENTATION_STACKED = 0x01 ORIENTATION_90_CC = 0x02 ORIENTATION_90_CW = 0x03 ROTATION_0_ANGLE = 0x00 ROTATION_STACKED = 0xFF # 就这个是垂直显示 WRAP_AT_RIGHT = 0x01 # 自动换行 NOT_WRAP_AT_RIGHT = 0x00 # 默认不自动换行 SHRINK_TO_FIT = 0x01 # 将字体缩小到适合单元格大小 NOT_SHRINK_TO_FIT = 0x00 # 默认正常显示 def __init__(self): self.horz = self.HORZ_GENERAL # 水平设置,默认是正常显示 self.vert = self.VERT_BOTTOM # 垂直设置,默认字体在单元格底部 self.dire = self.DIRECTION_GENERAL self.orie = self.ORIENTATION_NOT_ROTATED self.rota = self.ROTATION_0_ANGLE self.wrap = self.NOT_WRAP_AT_RIGHT # 如果数据超过单元格显示范围是否自动换行显示,默认不换行 self.shri = self.NOT_SHRINK_TO_FIT # 如果数据超过单元格范围会自动缩小字体来适应当前单元格的显示范围,默认不缩小字体。 self.inde = 0 self.merg = 0
2.1下面是一个小示例:
import xlwt # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 实例化表格样式对象 xstyle = xlwt.XFStyle() # 设置字体样式 xfont = xlwt.Font() xfont.colour_index = 0x04 # 设置字体颜色 xfont.bold = True # 字体加粗 xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小) xfont.name = '宋体' # 设置字体 # 设置字体在单元格中的位置 xalig = xlwt.Alignment() xalig.horz = 0x02 # 字体水平居中 xalig.vert = 0x01 # 字体水平居中 # 将字体对象赋值给样式对象 xstyle.font = xfont xstyle.alignment = xalig for i in range(3): for j in range(3): # 向工作表中添加数据(参数对应 行, 列, 值,样式) worksheet.write(i,j, label = 'test_'+str(j),style=xstyle) # 保存数据到硬盘 workbook.save(r'i:\2.xls')
如果一切顺利你会看到如下所示:
3、Border类简介
class Borders(object): NO_LINE = 0x00 # 无边框 THIN = 0x01 # 细边框 MEDIUM = 0x02 # 中号细边框 DASHED = 0x03 # 虚线边框 DOTTED = 0x04 # 点划线和虚线差不多 THICK = 0x05 # 粗边框 DOUBLE = 0x06 # 加粗边框 HAIR = 0x07 # 和虚线差不多 #The following for BIFF8 MEDIUM_DASHED = 0x08 # 中号虚线 THIN_DASH_DOTTED = 0x09 # 细虚线 MEDIUM_DASH_DOTTED = 0x0A # 中号带点的虚线 THIN_DASH_DOT_DOTTED = 0x0B # 点划线 MEDIUM_DASH_DOT_DOTTED = 0x0C # 中号点划线 SLANTED_MEDIUM_DASH_DOTTED = 0x0D # 斜线虚线点组成的 NEED_DIAG1 = 0x01 NEED_DIAG2 = 0x01 NO_NEED_DIAG1 = 0x00 NO_NEED_DIAG2 = 0x00 def __init__(self): # 设置边框 self.left = self.NO_LINE self.right = self.NO_LINE self.top = self.NO_LINE self.bottom = self.NO_LINE self.diag = self.NO_LINE # 不知道干嘛用的 # 设置边框颜色 self.left_colour = 0x40 self.right_colour = 0x40 self.top_colour = 0x40 self.bottom_colour = 0x40 self.diag_colour = 0x40 # 不知道干嘛用的 self.need_diag1 = self.NO_NEED_DIAG1 self.need_diag2 = self.NO_NEED_DIAG2
3.1下面是带边框的小示例
import xlwt # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 实例化表格样式对象 xstyle = xlwt.XFStyle() # 设置字体样式 xfont = xlwt.Font() xfont.colour_index = 0x04 # 设置字体颜色 xfont.bold = True # 字体加粗 xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小) xfont.name = '宋体' # 设置字体 # 设置字体在单元格中的位置 xalig = xlwt.Alignment() xalig.horz = 0x02 # 字体水平居中 xalig.vert = 0x01 # 字体水平居中 # 设置边框 xborder = xlwt.Borders() # 边框是斜,点虚线 xborder.left = 0x0d xborder.top = 0x0d xborder.right = 0x0d xborder.bottom = 0x0d # 边框颜色 xborder.bottom_colour = 0x35 xborder.top_colour = 0x8 xborder.left_colour = 0x012 xborder.right_colour = 0x4 # 设置样式 xstyle.font = xfont xstyle.alignment = xalig xstyle.borders = xborder for i in range(3): for j in range(3): # 向工作表中添加数据(参数对应 行, 列, 值,样式) worksheet.write(i,j, label = 'test_'+str(j),style=xstyle) # 保存数据到硬盘 workbook.save(r'i:\2.xls')
最终你会看到如下所示:
4、背景类Background简介
class Pattern(object): # patterns 0x00 - 0x12 NO_PATTERN = 0x00 SOLID_PATTERN = 0x01 def __init__(self): self.pattern = self.NO_PATTERN # 是否设置背景,必须允许设置背景,pattern_fore_colour和pattern_back_colour才会生效 self.pattern_fore_colour = 0x40 # 前景色不会影响单元格的边框 self.pattern_back_colour = 0x41 # 后景会影响单元格的边框
4.1下面进行小示例:
import xlwt # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 实例化表格样式对象 xstyle = xlwt.XFStyle() # 设置字体样式 xfont = xlwt.Font() xfont.colour_index = 0x04 # 设置字体颜色 xfont.bold = True # 字体加粗 xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小) xfont.name = '宋体' # 设置字体 # 设置字体在单元格中的位置 xalig = xlwt.Alignment() xalig.horz = 0x02 # 字体水平居中 xalig.vert = 0x01 # 字体水平居中 # 设置边框 xborder = xlwt.Borders() # 边框是斜,点虚线 xborder.left = 0x0d xborder.top = 0x0d xborder.right = 0x0d xborder.bottom = 0x0d # 边框颜色 xborder.bottom_colour = 0x35 xborder.top_colour = 0x8 xborder.left_colour = 0x012 xborder.right_colour = 0x4 # 设置单元格背景 xpattern = xlwt.Pattern() xpattern.pattern = 0x01 xpattern.pattern_fore_colour = 0x05 # 设置样式 xstyle.font = xfont xstyle.alignment = xalig xstyle.borders = xborder xstyle.pattern = xpattern for i in range(3): for j in range(3): # 向工作表中添加数据(参数对应 行, 列, 值,样式) worksheet.write(i,j, label = 'test_'+str(j),style=xstyle) # 保存数据到硬盘 workbook.save(r'i:\2.xls')
最终你会看到如下图所示:
上述只是简单的介绍了xlwt最基础的方法,还有许多方法功能没有被列举出来,这里就不一一列举了。有兴趣的小伙伴可以自己看源码来实现自己想要的功能。
三、一些常用的方法简介
1、设置单元格行高,列宽。
目前没有找到好的办法,只能逐行逐列的设置。代码如下:
import xlwt # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 实例化表格样式对象 xstyle = xlwt.XFStyle() # 设置字体样式 xfont = xlwt.Font() xfont.colour_index = 0x04 # 设置字体颜色 xfont.bold = True # 字体加粗 xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小) xfont.name = '宋体' # 设置字体 # 设置字体在单元格中的位置 xalig = xlwt.Alignment() xalig.horz = 0x02 # 字体水平居中 xalig.vert = 0x01 # 字体水平居中 # 设置边框 xborder = xlwt.Borders() # 边框是斜,点虚线 xborder.left = 0x0d xborder.top = 0x0d xborder.right = 0x0d xborder.bottom = 0x0d # 边框颜色 xborder.bottom_colour = 0x35 xborder.top_colour = 0x8 xborder.left_colour = 0x012 xborder.right_colour = 0x4 # 设置单元格背景 xpattern = xlwt.Pattern() xpattern.pattern = 0x01 xpattern.pattern_fore_colour = 0x05 # 设置样式 xstyle.font = xfont xstyle.alignment = xalig xstyle.borders = xborder xstyle.pattern = xpattern for i in range(3): # 设置行高 worksheet.row(i).height_mismatch = True worksheet.row(i).height = 20 * 30 # 20是基数*30是行的高度 for j in range(3): # 向工作表中添加数据(参数对应 行, 列, 值,样式) data = 'test_'+str(j) worksheet.col(j).width = 256 * len(data) * 2 # 设置列宽,计算列宽度:256是单元格基数*用数据长度*2最终的结果单元格的宽度和数据正好填满。 worksheet.write(i,j, label = data,style=xstyle) # 保存数据到硬盘 workbook.save(r'i:\2.xls')
最终会看到如下效果
2、在单元格中显示日期,代码如下:
import xlwt import datetime # 实例化一个工作簿对象 workbook = xlwt.Workbook(encoding = 'utf-8') # 获取工作表对象Worksheet worksheet = workbook.add_sheet('work_sheet') # 实例化表格样式对象 xstyle = xlwt.XFStyle() # 设置字体样式 xfont = xlwt.Font() xfont.colour_index = 0x04 # 设置字体颜色 xfont.bold = True # 字体加粗 xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小) xfont.name = '宋体' # 设置字体 # 设置字体在单元格中的位置 xalig = xlwt.Alignment() xalig.horz = 0x02 # 字体水平居中 xalig.vert = 0x01 # 字体水平居中 # 设置边框 xborder = xlwt.Borders() # 边框是斜,点虚线 xborder.left = 0x0d xborder.top = 0x0d xborder.right = 0x0d xborder.bottom = 0x0d # 边框颜色 xborder.bottom_colour = 0x35 xborder.top_colour = 0x8 xborder.left_colour = 0x012 xborder.right_colour = 0x4 # 设置单元格背景 xpattern = xlwt.Pattern() xpattern.pattern = 0x01 xpattern.pattern_fore_colour = 0x05 # 设置样式 xstyle.font = xfont xstyle.alignment = xalig xstyle.borders = xborder xstyle.pattern = xpattern xstyle.num_format_str = 'M/D/YY' # 日期显示格式,还有很多其它数据类型的选项,请参考下文。 for i in range(3): # 设置行高 worksheet.row(i).height_mismatch = True worksheet.row(i).height = 20 * 30 # 20是基数*30是行的高度
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程