1、用xlrd包读取excel数据

import xlrddef 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需要加rfile_name = r'C:\Users\Lj\Desktop\data.xls'# 使用ExcelFiletable = 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='过热器系统')# 一次读取多个sheettable = 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)# 输出具体一列的值