赞
踩
前言:
在Python语言,常用的excel读写库有xrld和openpyxl两个,当然pandas库也可以从excel文件中读取数据,但这里不建议使用。有个问题就是,xrld只能用于读取数据而不能用来写数据,openpyxl既可以读数据也可以用来写数据,openpyxl读数据操作相对xrld会麻烦一点。xrld读取到的数据为数组,而openpyxl读取到的数据为元组类型的数组,需要先遍历获取元组再从元组数据中提取相应的值,操作会比较麻烦。但openpyxl写数据比较方便。所以,最好的打开方式就是,xrld用于读取数据,openpyxl用于写数据。记住那句话:专用的工具永远比通用的工具更顺手。
xrld安装:
pip install xrld
使用示例:
在Pycharm中新建一个Test.py文件。将以下代码复制进去并运行:
- # -*- coding: utf-8 -*-
- import xlrd
-
- excel=xlrd.open_workbook("test.xlsx") #打开excel文件
- sheet=excel.sheet_by_index(0)#根据下标获取工作薄,这里获取第一个
- print(sheet.col_values(0)) #获取第一列的内容
运行结果:
从上面的返回结果可以看出,从excel中读取数据只需要三行代码,返回的数据类型为数组。操作具体的元素时需要遍历或下标方式获取。更多的操作参考以下方法:
- # -*- coding: utf-8 -*-
- import xlrd
-
- excel=xlrd.open_workbook("test.xlsx") #打开excel文件
-
- #工作薄操作
- sheet=excel.sheet_by_index(0)#根据下标获取工作薄
- # sheet1=excel.sheet_by_name('Sheet1')#根据工作薄名称获取工作薄
- # print(excel.sheet_names()) #获取所有工作薄名称 如['Sheet1', 'Sheet2', 'Sheet3']
- # print(sheet.name) #获取工作薄名称(比较少用)
- # print(sheet.nrows) #获取工作薄数据总行数
- # print(sheet.ncols) #获取工作薄数据总列数
-
- #数据操作
- print(sheet.col_values(0)) #获取第一列数据
- # print(sheet.row_values(0)) #获取第一行数据
- # print(sheet.cell(0,0).value) #获取第一行第一列单元格的数据
以上常用的方法基本可以解决开发过程中百分之八十以上的需求。更多的内容请参考官方文档。
练手小demo:
学校里有如下一批excel文件:
需要从这批文件中读取age字段的值,统计一个年级内的年龄数据。但是由于每个班级提交上来的excel文件中每一列数据的位置并不固定。也即如下这个样子文件:
因此从这批字段位置不固定的excel文件中获取age列的数据,就不能使用指定列的方式来获取,需要使用“动态的方法”。实现思路如下:
- 1、先获取第一列内容:['name', 'age', 'sex', 'class']
- 2、使用列表的查找元素下标方法查找age所在列的下标
- 3、通过下标获取age列的所有内容
- 4、遍历该列的所有元素,写到新excel或其他地方去
示例代码:
- # -*- coding: utf-8 -*-
- import xlrd
-
- excel=xlrd.open_workbook("test.xlsx") #打开excel文件
- sheet=excel.sheet_by_index(0)#获取工作薄
-
- rows:list=sheet.row_values(0) #获取第一行的内容['name', 'age', 'sex', 'class']
- index=rows.index('age') #获取age列所在的列数: 1
-
- listage=sheet.col_values(index) #获取age列的所有内容:['age', 7.0, 7.0, 7.0, 6.0]
-
- #遍历该列所有的内容
- for i in range(0,len(listage)):
- if i!=0:# 去除列名称"age"
- print(listage[i])
-
- """
- 注:
- rows:list=sheet.row_values(0)中的 rows:list表示指定rows的类型数组
- 因为在pycharm中,如果不指定类型,后面不会提示rows.index()方法,当然也可以不
- 指定。只是需要自已记代码。
- """
执行结果:
后语:
人生苦短,快用pyhton。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。