在实际应用中,经常会遇到需要读取或导入Excel文件的情况,那么在Python中如何读取 Excel 表格呢?

本文中介绍如何使用Tablib库来导入Excel文件。

Tablib是一个表格数据集库,可用于导入、导出和操作表格数据集,Tablib支持大部分流行的表格数据(文件)格式:

cli

csv

dbf

df (DataFrame)

html

jira

json

latex

ods

rst

tsv

xls

xlsx

yaml


其中,xls和xlsx就是Excel文件格式。

我们看看Tablib的使用方法。

安装

执行命令

pip install “tablib[all]”

安装Tablib及所有支持格式的依赖项。

如果只需支持xls,xlsx格式,则使用下述命令:

pip install "tablib[xls,xlsx]"

读取Excel文件

Tablib的核心是Dataset对象,我们通过创建Databook或Dataset来实现对数据表的读取。我们使用一个示例Excel文件,该文件只有一个工作表,表格内容如下:

demo.xlsx文件

下面的代码对该文件进行读取。

from tablib import Dataset,Databook #打开Xcel文件,注意xlsx的打开方式为字节方式”rb“; CSV等类型的文件则采用文本方式打开。 filepath = "demo.xlsx" f = open(filepath,"rb") multi_sheet = False #对于多工作表的Excel表格,使用Databook读取工作表 if multi_sheet: databook = Databook().load(f.read(),headers=False,format="xlsx") datasets = databook.sheets() #获得第2个工作表 dataset = datasets[1] else:#对于只有一个工作表的Excel表格,可直接使用Dataset读取dataset对象 dataset = Dataset().load(f.read(),headers=False,format="xlsx") f.close() print(dataset)

在上述代码中,使用open打开Excel文件,调用f.read()作为输入流传递给Dataset对象读取。需要注意的是xlsx文件的打开方式为字节方式"rb"; 而CSV等文本类型的文件则采用文本方式打开。

上述代码的输出结果如下:

简单的表格示例|None|None|None None |None|None|None 姓名 |年龄 |身高 |体重 张三 |18 |178 |68 李四 |20 |177 |65 王五 |22 |176 |70

上面代码中只是取到了数据,还需要对数据进行一些处理,包括设置表头、删除非标准数据行等。

#接续上面的代码 #设置表头和标题 dataset.title = dataset[0] dataset.headers = dataset[2] #前3行不是数据,删除。 del dataset[:3] print(dataset)

输出结果:

姓名|年龄|身高 |体重 --|--|---|-- 张三|18|178|68 李四|20|177|65 王五|22|176|70

Dataset对象设置了表头之后,我们就可以按列名获取数据了。

#打印‘姓名’列 print(dataset["姓名"])

输出结果:

['张三', '李四', '王五']

以上代码在Python3.7运行通过。