1、用xlrd包读取excel数据
import xlrd
def read_excel():
# 打开文件,xlrd.open_workbook(),函数中参数为文件路径,分为相对路径和绝对路径
workBook = xlrd.open_workbook(r'C:\Users\Lj\Desktop\data.xls')
# 获取所有sheet的名字(list类型)
allSheetNames = workBook.sheet_names()
print(allSheetNames);
# 按索引号获取单个sheet的名字(string类型)
sheet1Name = workBook.sheet_names()[0]
print(sheet1Name);
# 获取sheet内容
## 按索引号获取sheet内容
sheet1_content1 = workBook.sheet_by_index(0); # sheet索引从0开始
## 按sheet名字获取sheet内容,workBook.sheet_by_name()括号内的参数是sheet的真实名字
sheet1_content2 = workBook.sheet_by_name('省煤器+蒸发区')
# 获取sheet的名称,行数,列数
print(sheet1_content1.name,sheet1_content1.nrows,sheet1_content1.ncols)
# 获取整行和整列的值(数组)
rows = sheet1_content1.row_values(3) # 获取第四行内容
cols = sheet1_content1.col_values(2) # 获取第三列内容
print(rows);
# 使用循环获得多行的数据并保存到table中,获得多列数据是同样的方法
table = [] # 定义一个空列表,将读取的每一行数据保存到该列表中
for i in range(sheet1_content1.nrows):
rows = sheet1_content1.row_values(i)
table.append(rows)
print(rows)
# 获取单元格内容(三种方式)
print(sheet1_content1.cell(1, 0).value)
print(sheet1_content1.cell_value(2, 2))
print(sheet1_content1.row(2)[2].value)
# 获取单元格内容的数据类型
# Tips: python读取excel中单元格的内容返回的有5种类型 [0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error]
print(sheet1_content1.cell(1, 0).ctype)
if __name__ == '__main__':
read_excel()
2、用pandas包读取excel数据
先熟悉以下read_excel函数中常用的几个参数,想要看完整的参数解释可以参考Pandas read_excel()参数详解_leenuxcore的博客-CSDN博客_read_excel
pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True)
其中io表示文件路径,示例:io=r"文件绝对路径";sheet_name表示sheet的名称,默认为0,表示不输入sheet_name的参数下,默认引用第一张sheet的数据,示例:sheet_name="sheet名称"或sheet_name=[1]([1]表示第二个的sheet)或sheet_name=None(None 表示引用所有sheet);header表示用第几行作为表头,默认header=0,即默认第一行为表头,示例:hearder=1(选择第二行为表头,第一行数据就不要了)或header=None(表示不使用数据源中的表头);index_col指定列为索引列,示例:index_col=None(默认项,也就是索引为0的列用作DataFrame的行标签)或index=0(指定第几列为索引列);usecols默认为None,解析所有列,如果为str,则表示Excel列字母和列范围的逗号分隔列表(例如“ A:E”或“ A,C,E:F”),范围全闭,如果为int,则表示解析到第几列,如果为int列表,则表示解析那几列;squeeze默认为False,如果设置squeeze=True则表示如果解析的数据只包含一列,则返回一个Series;dtype是指定列的数据类型,示例:dtype=None(默认为None,也就是不改变数据类型)或dtype={0:"float64", 2:str};engine可以接受的参数有“ xlrd”,“ openpyxl”或“ odf”,用于使用第三方的库去解析excel文件;converters是对指定列的数据进行指定函数的处理,传入参数为列名与函数组成的字典。key 可以是列名或者列的序号,values是函数,可以def函数或者直接lambda都行;true_values将指定的文本转换为True,默认为None,false_values将指定的文本转换为False,默认为None,示例:true_values=['女'], false_values=['男'];skiprows表示跳过指定的行,示例:skiprows=1;nrows指定需要读取前多少行,通常用于较大的数据文件中,默认为None,示例:nrows=3(读取前三行);na_values指定某些列的某些值为NaN,示例:na_values='大';keep_default_na表示导入数据时是否导入空值。
import pandas as pd
# 创造一个文件名变量,此处用的是绝对路径,Windows需要加r
file_name = r'C:\Users\Lj\Desktop\data.xls'
# 使用ExcelFile
table = pd.ExcelFile(file_name)
print(type(table))
print(table.sheet_names) # 按照顺序获取sheet名称
# 提取表格信息
sheet1 = table.parse(sheet_name=0) # 可以使用序号,一次性读取多个可用列表[0,1]
sheet2 = table.parse(sheet_name=table.sheet_names[1]) # 也可以使用sheet名
# 使用read_excel()
# 逐个sheet读取
st1 = pd.read_excel(file_name, sheet_name='省煤器+蒸发区', header=1)
st2 = pd.read_excel(file_name, sheet_name='过热器系统')
# 一次读取多个sheet
table = pd.read_excel(file_name, sheet_name=[0, 1])
print(st1.shape) # 输出元组,分别为行数和列数,默认第一行是表头不算行数
print(st1) # 输出该sheet的所有内容
print(st1.values) # 输出第一行以外的值
print(st1.values[0]) # 输出第一行的值
print(st1['省煤器压力'].values) # 输出具体一列的值