300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python中对excel工作表的基础操作:xlrd xlwt模块笔记

python中对excel工作表的基础操作:xlrd xlwt模块笔记

时间:2020-04-01 06:58:43

相关推荐

python中对excel工作表的基础操作:xlrd xlwt模块笔记

模块介绍

(1)什么是xlrd模块?

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。

(2)为什么使用xlrd模块?

在UI自动化或者接口自动化中数据维护是一个核心,所以此模块非常实用。

xlrd模块可以用于读取Excel的数据,速度非常快,推荐使用!

官方文档:https://xlrd.readthedocs.io/en/latest/

重要的事情说三遍:仅支持.xls格式仅支持.xls格式仅支持.xls格式

xlrd单元格数据类型表示:

0:empty1:string2:number3:date4:boolean5:error

准备工作

准备一张示例表格:D:\code\python\06.excel操作\pokes-001.xls内容如下。

import xlwt, xlrddata = xlrd.open_workbook(r"D:\code\python\06.excel操作\pokes-001.xls")print("打开文件", data)

一、读取文件

print("通过索引顺序获取第一个工作表", data.sheets()[0])print("获取全部sheet", data.sheets())print("返回book中所有工作表的名字", data.sheet_names())print(data.sheets()[0]) # 激活工作表对象print(data.sheet_by_index(0)) # 根据索引获取工作表,0表示第一个,以此类推print(data.sheet_by_name('Sheet1')) # 根据名字sheetname(区分大小写)获取工作表

查看共有多少个工作表

print(len(data.sheet_names())) # 返回所有工作表的名称组成的list的长度 3print(data.nsheets) # 返回excel工作表的数量 3print("*" * 50)

行操作

sheet1 = data.sheet_by_index(0) # 选择读取第一个工作表print(sheet1.nrows) # 有效行数print(sheet1.row(0)) # 输出第一行数据,[text:'ID', text:'姓名', text:'性别', text:'年龄']print(sheet1.row(1)) # 输出第2行数据,返回该行单元格对象组成的列表print(sheet1.row_types(1)) # 获取单元格的数据类型,返回指定行数据的数据类型print(sheet1.row(1)[3]) # 获取单元格的数据类型,number:12.0print(sheet1.row(1)[2].value) # 获取单元格value,男print(sheet1.row_values(1)) # 得到指定行单元格的值,['001', '张三001', '男', 12.0]print(sheet1.row_len(1)) # 得到单元格的长度print("*" * 50)

操作excel列

sheet1 = data.sheet_by_index(0) # 选择读取第一个工作表print(sheet1.ncols) # 有效列数print(sheet1.col(1)) # 该列单元格对象组成的列表print(sheet1.col(1)[2]) # 定位单元格获取值,1表示第二列,2表示第三行,查看字符类型print(sheet1.col(1)[2].value) # 定位单元格获取值,1表示第二列,2表示第三行,获取值print(sheet1.col_values(1)) # 返回该列所有单元格的value组成的列表,其实就是将第二列的值组成一个列表print(sheet1.col_types(1)) # 获取该列单元格的数据类型 [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]print("*" * 50)

单元格操作

sheet1 = data.sheet_by_index(0) # 激活第一个工作表print(sheet1.cell(1, 2)) # 1是行,2是列,输出:text:'男' ,text是文本

获取单元格数据类型

print(sheet1.cell_type(1, 2)) # 1print(sheet1.cell(1, 2).ctype) # 1

获取单元格的值

print(sheet1.cell(1, 2).value) # 获取第二行,第三列单元格的值 男print(sheet1.cell_value(1, 2)) # 男print("*" * 150)

二、写入文件

import xlwt# 创建一个workbook对象,就相当于创建了一个Excel文件workbook = xlwt.Workbook(encoding='utf-8',style_compression=0) # encoding:设置编码,可写中文;style_compression:是否压缩,不常用# 创建一个sheet对象,相当于创建一个sheet页worksheet = workbook.add_sheet('这是sheet1',cell_overwrite_ok=True) # cell_overwrite_ok:是否可以覆盖单元格,默认为False# 向sheet页中添加数据:worksheet.write(行,列,值)worksheet.write(0,0,'我要发财啦') # 第1行第1列写入数据# 将以上内容保存到指定的文件中workbook.save('测试文件.xls')

运行结果如下图:

import xlwtworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook.add_sheet('这是sheet1')style = xlwt.XFStyle() # 初始化样式font = xlwt.Font() # 为样式创建字体(font)# 指定字体的具体属性(仅列出常用属性)font.name = '宋' # 指定字体font.height = 300 # 和excel字体大小比例是1:20font.bold = True # 字体是否加粗font.underline = True # 字体是否下划线font.struck_out = True # 字体是否有横线font.italic = True # 是否斜体字font.colour_index = 4 # 字体颜色# 设定字体样式style.font = font# 向sheet页中添加数据worksheet.write(0, 0, '无样式文本')worksheet.write(0, 1, '有样式文本', style)workbook.save('测试文件.xls')

运行结果如下图:

字体大小

和excel字体大小比例是1:20,假设需要15号字体大小,则需要设置成300

字体颜色对照图

背景颜色设置(pattern)

import xlwtworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook .add_sheet('这是sheet1')worksheet.write(0,0,'无样式文本')# 初始化样式style = xlwt.XFStyle()# 1. 为样式创建字体(font)font = xlwt.Font()# 指定字体的具体属性(仅列出常用属性)font.name = '宋' # 指定字体font.height = 300 # 和excel字体大小比例是1:20font.bold = True # 字体是否加粗font.underline = True # 字体是否下划线font.struck_out = True # 字体是否有横线font.italic = True # 是否斜体字font.colour_index = 4 # 字体颜色# 设置style的各个属性的样式style.font = font # 设定字体样式worksheet.write(2,0,'有样式文本(字体样式)',style)# 2. 为样式创建背景图案(pattern)pattern = xlwt.Pattern()# 指定背景颜色pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 设置背景颜色模式pattern.pattern_fore_colour = 3 # 不同的值代表不同颜色背景# 设置style的各个属性的样式style.pattern = pattern # 设定背景图案样式worksheet.write(4,0,'有样式文本(字体样式+背景图案样式)',style)workbook .save('测试文件.xls')

边框设置(borders)

import xlwtworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook .add_sheet('这是sheet1')# 初始化样式style = xlwt.XFStyle()borders = xlwt.Borders()# 设定边框属性borders.left = xlwt.Borders.THINborders.right = xlwt.Borders.THINborders.top = xlwt.Borders.THINborders.bottom = xlwt.Borders.THIN# 设定边框样式style.borders = borders# 写入数据worksheet.write(0,0,'无样式文本')worksheet.write(2,0,'有样式文本(边框样式)',style)# 保存.xlsworkbook.save('测试文件.xls')

对齐方式设置(alignment)

import xlwtworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook .add_sheet('这是sheet1')# 初始化样式style = xlwt.XFStyle()# 对齐方式的设置(alignment)alignment = xlwt.Alignment()# 设置具体的对齐方式 : vert代表垂直对齐方式;horz代表水平对齐方式alignment.vert = 0x01 # 0x00 上端对齐;0x01 居中对齐(垂直方向上);0x02 底端对齐alignment.horz = 0x03 # 0x01 左端对齐;0x02 居中对齐(水平方向上);0x03 右端对齐# 自动换行alignment.wrap = 1 # 自动换行# 设定设定对齐方式style.alignment = alignment# 写入数据worksheet.write(0,0,'无样式文本')worksheet.write(2,0,'有样式文本(设定对齐方式)',style)# 保存.xlsworkbook.save('测试文件.xls')

单元格格式(num_format_str)

import xlwtfrom datetime import datetimeworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook .add_sheet('这是sheet1')date_str = '-04-12'style = xlwt.XFStyle()num_format_str = 'yyyy/MM/dd'style.num_format_str = num_format_str# 写入数据worksheet.write(0,0,date_str)worksheet.write(2,0,datetime.strptime(date_str,'%Y-%m-%d').date(),style)# 保存.xlsworkbook.save('测试文件.xls')

列宽和行高

import xlwtfrom datetime import datetimeworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook .add_sheet('这是sheet1')# 写入数据worksheet.write(0,0,'我是个很长的字符')worksheet.write(0,4,'我也是个很长的字符哦')worksheet.col(4).width=256*20 # 设计第4列宽度# 保存.xlsworkbook.save('测试文件.xls')

多行列合并写入

import xlwtworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook .add_sheet('这是sheet1')# 写入数据worksheet.write(0,0,'无合并')worksheet.write_merge(0, 3, 4, 7, '有合并')#1-4行,5-8列合并单元格# 保存.xlsworkbook.save('测试文件.xls')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。