利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块

 

本文介绍一下使用Python对Excel文件的基本操作,包括使用xlrd模块读取excel文件,使用xlwt模块将数据写入excel文件,使用openpyxl模块读取写入和修改excel文件。

【最近一些朋友反映个别代码无法调试(但是在我这里没问题),这里代码我都是调试过的,之前一年也没有朋友反馈过这些问题,所以大概率是版本问题。

我的版本如下: xlrd 1.1.0 、xlwt 1.3.0 、openpyxl 2.5.4 】

 

目录

1、使用xlrd模块对xls文件进行读操作

1.1 获取工作簿对象

1.2 获取工作表对象

1.3 获取工作表的基本信息

1.4 按行或列方式获得工作表的数据

1.5 获取某一个单元格的数据

2、使用xlwt模块对xls文件进行写操作

2.1 创建工作簿

2.2 创建工作表

2.3 按单元格的方式向工作表中添加数据

2.4 按行或列方式向工作表中添加数据

2.5 保存创建的文件

 3、使用openpyxl模块对xlsx文件进行读操作

3.1 获取工作簿对象

3.2 获取所有工作表名

3.3 获取工作表对象

3.4 根据索引方式获取工作表对象

3.5 获取工作表的属性

3.6 按行或列方式获取表中的数据

3.7 获取特定行或特定列的数据

3.8 获取某一块的数据

3.9 获取某一单元格的数据

4、使用openpyxl模块对xlsx文件进行写操作

4.1 创建工作簿和获取工作表

4.2 创建新的工作表

4.3 将数据写入工作表

4.4 保存工作簿

5、修改已经存在的工作簿(表)

5.1 插入一列数据

5.2 修改特定单元格

5.3 批量修改数据


1、使用xlrd模块对xls文件进行读操作

假设我们的表如下,是一个“农村居民家庭人均纯收入和农村居民家庭人均消费情况”的表格。后缀为.xls。里面包含两个工作表,“各省市”和“测试表”。

提一下,一个Excel文件,就相当于一个“工作簿”(workbook),一个“工作簿”里面可以包含多个“工作表(sheet)”

 

1.1 获取工作簿对象

引入模块,获得工作簿对象。


import xlrd  #引入模块

#打开文件,获取excel文件的workbook(工作簿)对象
workbook=xlrd.open_workbook("DataSource/Economics.xls")  #文件路径


1.2 获取工作表对象

我们知道一个工作簿里面可以含有多个工作表,当我们获取“工作簿对象”后,可以接着来获取工作表对象,可以通过“索引”的方式获得,也可以通过“表名”的方式获得。

'''对workbook对象进行操作'''

#获取所有sheet的名字
names=workbook.sheet_names()
print(names) #['各省市', '测试表']  输出所有的表名,以列表的形式

#通过sheet索引获得sheet对象
worksheet=workbook.sheet_by_index(0)
print(worksheet)  #<xlrd.sheet.Sheet object at 0x000001B98D99CFD0>

#通过sheet名获得sheet对象
worksheet=workbook.sheet_by_name("各省市")
print(worksheet) #<xlrd.sheet.Sheet object at 0x000001B98D99CFD0>

#由上可知,workbook.sheet_names() 返回一个list对象,可以对这个list对象进行操作
sheet0_name=workbook.sheet_names()[0]  #通过sheet索引获取sheet名称
print(sheet0_name)  #各省市

1.3 获取工作表的基本信息

在获得“表对象”之后,我们可以获取关于工作表的基本信息。包括表名、行数与列数。

'''对sheet对象进行操作'''
name=worksheet.name  #获取表的姓名
print(name) #各省市

nrows=worksheet.nrows  #获取该表总行数
print(nrows)  #32

ncols=worksheet.ncols  #获取该表总列数
print(ncols) #13

1.4 按行或列方式获得工作表的数据

有了行数和列数,循环打印出表的全部内容也变得轻而易举。

for i in range(nrows): #循环打印每一行
    print(worksheet.row_values(i))  #以列表形式读出,列表中的每一项是str类型
#['各省市', '工资性收入', '家庭经营纯收入', '财产性收入', ………………]
#['北京市', '5047.4', '1957.1', '678.8', '592.2', '1879.0,…………]

col_data=worksheet.col_values(0)  #获取第一列的内容
print(col_data)

1.5 获取某一个单元格的数据

 我们还可以将查询精确地定位到某一个单元格。

在xlrd模块中,工作表的行和列都是从0开始计数的。

#通过坐标读取表格中的数据
cell_value1=sheet0.cell_value(0,0)
cell_value2=sheet0.cell_value(1,0)
print(cell_value1)  #各省市
print(cell_value2)   #北京市

cell_value1=sheet0.cell(0,0).value
print(cell_value1) #各省市
cell_value1=sheet0.row(0)[0].value
print(cell_value1)  #各省市

 

 

2、使用xlwt模块对xls文件进行写操作

2.1 创建工作簿


# 导入xlwt模块
import xlwt

#创建一个Workbook对象,相当于创建了一个Excel文件
book=xlwt.Workbook(encoding="utf-8",style_compression=0)

'''
Workbook类初始化时有encoding和style_compression参数
encoding:设置字符编码,一般要这样设置:w = Workbook(encoding='utf-8'),就可以在excel中输出中文了。默认是ascii。
style_compression:表示是否压缩,不常用。
'''

2.2 创建工作表

创建完工作簿之后,可以在相应的工作簿中,创建工作表。


# 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
sheet = book.add_sheet('test01', cell_overwrite_ok=True)
# 其中的test是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False

2.3 按单元格的方式向工作表中添加数据


# 向表test中添加数据
sheet.write(0, 0, '各省市')  # 其中的'0-行, 0-列'指定表中的单元,'各省市'是向该单元写入的内容
sheet.write(0, 1, '工资性收入')

#也可以这样添加数据
txt1 = '北京市'
sheet.write(1,0, txt1)  
txt2 = 5047.4
sheet.write(1, 1, txt2)

 最后被文件被保存之后,上文语句形成的“工作表”如下所示:

评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值