使用Python openpyxl模块读写Excel

  前面介绍了利用Python中xlrd与xlwt读写Excel的基本操作( 《使用Python xlrd与xlwt模块读写Excel》),这两个模块可以很方便地对Excel进行处理,非常实用。但由于xlwt只支持Excel2007之前的版本,所以无法生成.xlsx后缀的文件,而且其单个sheet支持的最大行数为65535,数据量一旦超过限制行数,会遇到如下错误

ValueError: row index was 65536, not allowed by .xls format

这是xlwt很大的短板,遇到这种情况只能用其他包代替,openpyxl 是一个不错的选择,它可用于读写Excel2010 xlsx/xlsm/xltx/xltm 文件,同时支持 Pandas 和 NumPy 等包,能够绘制图表,并且同样支持格式控制等,详细文档可以参考:
https://openpyxl.readthedocs.io/en/default/index.html#
下面开始介绍它的一些基本操作:

首先通过pip安装

pip install openpyxl

或者手动安装:https://pypi.python.org/pypi/openpyxl

###Excel的读取

#导入openpyxl package
import openpyxl

#打开一个已有工作簿
f = openpyxl.load_workbook('test.xlsx')

sheet相关操作

#获取sheet名称列表
name_list = f.sheetnames
name_list = f.get_sheet_names()

#通过名称调用sheet
table = f['name']
table = f.get_sheet_by_name('name')

#通过检索调用sheet
table = f.get_sheet_by_name(sheet_names[index])

#调用正在运行的sheet,一般为最后一个
table = f.active    	

#改变sheet的名字
table.title = 'newname'    

单元格相关操作

#读取单元格或范围切片
c = table['A1']			#获取'A1',返回class
c = table.cell(row = 1,column = 1)	#按行列数获读取

row5 = table[5]     	#获取第5行,返回元组
colA = table['C']    	#获取C列
cell_range = table['A1':'B4']    #获取范围切片元组
row_range = table[5:8]	#5到8行
col_range['A:D']		#A到D列

#按行列数读取范围切片
for row in table.iter_rows(min_row=1, max_col=3, max_row=2):    #按行读取
for col in table.iter_cols(min_row=1, max_col=3, max_row=2):    #按列读取

table.max_row    #最大行数
table.max_column #最大列数
table.rows    	 #按行遍历
table.columns    #按列遍历

#读取单元格的值
c = table['A2'].value	#按位置读取
c = table.cell(row = 1,column = 1).value	#按行列数读取 

需要注意的是openpyxl中按行列数检索时参数名‘row =’及‘column =’ 不能省略,而且均从1开始计数,这与xlrd有所不同。
####一个例子
利用openpyxl读出图1所示表中的一些信息,代码及结果如下:

![图 1.成绩单](https://img.blog.csdn.net/20170907002441784?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEzOTE5MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/South
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值