python--xlwt,xlrd处理excel模块,思路解释及技巧

本文详细介绍使用xlwt和xlrd模块处理Excel文件的技巧,包括创建和格式化单元格、设置行高列宽、合并单元格以及读取Excel数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

人之所以痛苦,那是因为你在成长。--------magic_guo

众做周知,python处理Excel的模块有很多,最近在做一个数据处理的需求,就开始慢慢了解了xlwt,xlrd这两个模块,虽然用起来有局限性,但是对于一般的数据处理还是游刃有余,下面我来分享一些我的经验,不到之处请大家指正。

先来讲xlwt:
一般的话简单使用xlwt模块的方法是:
1.导入xlwt模块
2.创建工作薄
3.创建工作表
4.(可选)对于单元格样式及格式的设置(这里面有很多内容,后面慢慢讲解)
5.写入数据(加上对于样式格式的设置)
6.保存execl文件
下面看代码:

import xlwt

# 简单的使用xlwt模块
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('my_sheet')
worksheet.write(0, 0, 'this is a test!')
workbook.save('excel.xls')

结果如下:
在这里插入图片描述
熟悉了基本操作,我们开始对于单元格的格式样式进行设置:
设置字体样式:

# 给单元格添加样式
workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet('my_sheet')
# 初始化样式
style = xlwt.XFStyle()
# 为样式创建字体
font = xlwt.Font()
# 设置字体为新罗马字体
font.name = 'Times New Roman'
# 设置字体黑体
font.bold = True
# 设置下划线
font.underline = True
# 设置字体斜体
font.italic = True
# 将上面设置的样式内容设置到font模块中
style.font = font
# 不带样式的写入
worksheet.write(0, 0, 'this is a test!')
# 带样式的写入
worksheet.write(0, 1, 'this is a test!', style)
# 保存excel
workbook.save('excel.xls')

结果如下:
在这里插入图片描述
上图结果可以看到两种写入方式并不一样。

设置行高列宽:
在xlwt中没有特定的函数来设置默认的列宽及行高,但是可以通过自动换行通过输入文字的多少来确定行高列宽
列宽:

workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet('my_sheet')

# 设置列的宽度(第0列的宽度为:3333)
# 在xlwt中列宽的表示方法为:默认字体0的1/256为单位。其创建时使用的默认宽度为2960,即11个字符0的宽度。所以我们在设置列宽时可以使用以下办法:
# 256为衡量单位,20表示20个字符的宽度
# 下面是设置第1列(按照Excel表示是A列)
worksheet.col(0).width = 256 * 20
worksheet.write(0, 0, label='this is a test!')
workbook.save('excel.xls')

结果:
在这里插入图片描述
行高:
第一种方法:

workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet('my_sheet')
# 通过自动换行的方式来设置行高,其中720为可修改参数,可以通过修改可变参数来匹配自己合适的行高
tall_style = xlwt.easyxf('font:height 720')
# 将第一行赋给first_row
first_row = worksheet.row(0)
# 将第一行的行高根据刚才的修改进行设置
first_row.set_style(tall_style)
# 写入数据
worksheet.write(0, 0, label='this is a test!')
workbook.save('excel.xls')

结果:
在这里插入图片描述
第二种方法:

# 另一种设置行高的方法
workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet('my_sheet')

worksheet.row(0).height_mismatch = True
worksheet.row(0).height = 800
worksheet.write(0, 0, label='this is a test!')
workbook.save('excel.xls')

结果:
在这里插入图片描述
相比较而言,第二种方法更简单一些。

合并单元格

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('my_sheet')
# 1,2个参数表示行数,3,4的参数表示列数
# 意思是合并0-3行,0-3列
worksheet.write_merge(0, 3, 0, 3, 'Second Merge')
workbook.save('excel.xls')

结果:
在这里插入图片描述

xlrd模块
xlrd模块最重要的是,对于工作薄book、工作表sheet和单元格cell的操作,毕竟该模块是读取excel的数据的:
思路方法:
1.导入xlrd模块
2.打开excel文件,获取工作薄
3.通过工作薄获取工作表
3.对单元格数据进行读取
4.关闭excel

简单的代码:

import xlrd

# 打开excel文件,获取工作薄
workbook = xlrd.open_workbook('excel.xls') # 填写文件路径
# 获取工作表,有好几种方法
# 1.通过索引顺序获取
worksheet = workbook.sheet_by_index(0)
# 2.通过索引顺序获取
# workbook.sheets()返回一个存放所有sheet名字的列表
worksheet2 = workbook.sheets()[0]
# 3.通过名字获取工作表
worksheet3 = workbook.sheet_by_name('my_sheet')

# 对于行的操作
# 获取工作表内的有效行数
nrows = worksheet.nrows()
# 返回由该行中所有的单元格对象组成的列表(rowx=2代表行号)
rowx_list = worksheet.row(rowx=2)
# 返回该行中所有单元格的数据类型组成的列表
rowx_datatype_list = worksheet.row_types(rowx=2, start_colx=0, end_colx=None)
# 返回该行中所有单元格的数据组成的列表
rowx_data_list = worksheet.row_values(rowx=2, start_colx=0, end_colx=None)
# 返回该行中所有单元格对象组成的列表
rowx_data_list1 = worksheet.row_slice(rowx=2, start_colx=0, end_colx=None)

# 对于列的操作
# 获取工作表内的有效列数
ncols = worksheet.ncols()
# 返回由该列中所有的单元格对象组成的列表(rowx=2代表行号)
colx = worksheet.col(colx=2)
# 返回该列中所有单元格对象组成的列表
colx_list = worksheet.row_slice()
# 返回该列中所有单元格对象的数据类型组成的列表
colx_datatype_list = worksheet.row_types(colx=2, start_colx=0, end_colx=None)
# 返回该列中所有单元格对象的数据组成的列表
colx_data_list = worksheet.col_values(colx=2, start_rowx=0, end_rowx=None)

# 对单元格的操作
# 返回单元格对象(即第二行第二列的单元格对象)
cell = worksheet.cell(rowx=2, colx=2)
# 返回单元格中的数据类型
cell_type = worksheet.cell_type(rowx=2, colx=2)
# 返回单元格中的数据
cell_data = worksheet.cell_value(rowx=2, colx=2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值