2016 - 2024

感恩一路有你

使用Python的xlrd模块读取Excel表格

浏览量:2643 时间:2024-06-14 13:20:27 作者:采采

在日常工作中,我们需要从Excel表格中提取数据进行分析。对于Python编程者而言,如何使用Python读取Excel表格数据是一个必须掌握的技能。本文介绍了使用Python的xlrd模块来操作Excel表格,以及封装了一个OpExcel类来实现各种功能。

导入模块

在使用Python读取Excel表格之前,我们需要导入xlrd模块,如果系统默认编码不是utf-8,还需要重新设置一下编码格式。

```

import xlrd

import sys

reload(sys)

('utf-8')

```

封装OpExcel类

为方便操作Excel表格,我们封装了一个OpExcel类,用于处理Excel表格。首先在类的初始化函数中打开Excel文件,并获取所有sheet名称。

```

class OpExcel(object):

"""操作Excel"""

def __init__(self, file_path):

super(OpExcel, self).__init__()

_path file_path

self.Excel _workbook(file_path)

_names()

```

获取sheet索引

由于每个Excel文件可能包含多个sheet,我们需要根据sheet名称来获取要操作的sheet的索引值。为此,我们添加了get_tableindex方法,用于获取sheet的索引值。

```

def get_tableindex(self, table):

"""获取excel需要操作的sheet的索引值"""

if table in

index_data(table)

return (index_data)

else:

print (table u'不是excel的sheet名称')

return False

```

获取所有数据

为了方便操作,我们可以将Excel表格中的所有数据按照字典形式保存,并按行取Excel表格中的数据。为此,我们添加了get_data方法。

```

def get_data(self):

"""获取excel所有数据已字典形式保存,按行取excle"""

excle{}

for table in

all_value[]

_by_name(table)

for i in range():

all_(_values(i))

excle[table]all_value

return excle

```

获取表行数和列数

有时候我们需要知道Excel表格中某个sheet的行数或列数,为此,我们添加了get_nrows和get_mcols方法分别用于获取表的行数和列数。

```

def get_nrows(self, table):

"""获取表行数"""

_by_name(table)

return

def get_mcols(self, table):

"""获取表列数"""

_by_name(table)

return

```

获取某一行数据和某一列数据

有时候我们只需要获取Excel表格中某一行或某一列的数据,为此,我们添加了get_rowdate和get_coldate方法。

```

def get_rowdate(self, table, nrow0, mcol0):

"""从M列开始获取第N行数据"""

_by_name(table)

data_values(nrow)

return (data[mcol:])

def get_coldate(self, table, nrow0, mcol0):

"""从N行开始获取第M列数据"""

_by_name(table)

data_values(mcol)

return (data[nrow:])

```

获取某个单元格的数据和类型

有时候我们需要获取Excel表格中某个单元格的数据和数据类型,为此,我们添加了get_cellate方法。

```

def get_cellate(self, table, nrow0, mcol0):

"""获取某个单元格数据和类型

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error"""

_by_name(table)

type(nrow,mcol).ctype

if (type 3):

data_value xlrd.xldate_as_tuple((nrow,mcol).value,)

value datetime(*data_value).strftime('%Y/%m/%d %H:%M:%S')

else:

value(nrow,mcol).value

data[type,value]

return (data)

```

获取合并单元格的行和列

有时候我们需要获取Excel表格中合并单元格有值的行和列,为此,我们添加了get_mergedcell方法。

```

def get_mergedcell(self, table):

"""获取合并单元格有值得行和列"""

_by_name(table)

data []

for (nrow,rowhigh,mcol,colhigh) in _cells:

([nrow,mcol])

return (data)

```

检查Excel表格中特定数据类型的单元格

有时候我们需要检查Excel表格中是否存在特定的单元格数据类型,为此,我们添加了get_ctype3方法。

```

def get_ctype3(self, table):

"""检查每一个单元格的ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

输出ctype3的单元格"""

nrows_nrows(table)

mcols_mcols(table)

data[]

for nrow in range(nrows):

for mcol in range(mcols):

type(nrow,mcol).ctype

if (type3):

([nrow,mcol])

if data![]:

return data

else:

return False

```

根据内容查找某一行的数据

有时候我们需要根据内容查找Excel表格中某一行的数据,为此,我们添加了get_datarow方法。

```

def get_datarow(self, table, data, cols0):

"""根据内容查找nrow行"""

if type(data)str or type(data)unicode:

mcolNone

nlist[]

datanrow{}

table_data_coldate(table,0,cols)

print(u'开始查找数据')

for nrow,row_data in enumerate(table_data):

if row_data data:

(nrow)

print(u'%s is in the %s Row'%(data,str(nrow)))

if nlist![] :

datanrow[data]nlist

return (datanrow)

else:

print(u'没匹配到数据')

return False

else:

print(u'Value type is wrong')

return False

```

总结:

本文介绍了使用Python的xlrd模块来读取Excel表格,并封装了一个OpExcel类来实现各种常用的功能,包括获取表格行数、列数、指定行列数据、指定单元格数据、合并单元格、特定数据类型单元格检查等。这些方法可以帮助你更加便捷地处理Excel表格。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。