利用Python中xlrd模块读取Excel表格

今日分享:使用xlrd模块读取Excel表格信息

上一篇文章简单介绍了在Python中如何将信息存储到excel文件中,详情见利用Python中xlwt模块操作Excel表格,这篇文章简单介绍利用Python语言来读取excel中的信息。

#导入库

>>> import xlrd

>>> from datetime import date,datetime #该库用于时间格式转换,在此导入此库为了说明某特殊内容,见后文

#打开excel文件

#注意文件路径写入方式,示例文件路径是为该excel在小编电脑上的存放路径,以下的所有操作及输出结果都是该文件中的信息

>>> workbook = xlrd.open_workbook(r'F:\python\python_exe\xlrd_demo.xlsx')

#获取excel文件中所有sheet表的名称

>>> workbook.sheet_names()

['转发量', '评论量', '点赞量']

输出结果表名该excel文件中包含三个sheet表

#sheet表支持索引(索引从0开始),见下代码示例

>>> workbook.sheet_names()[1]

'评论量'

#获取某sheet表内容,以下两种方式都可获取评论量sheet表的信息

#一:利用位置索引获取内容

>>> sheet2 = workbook.sheet_by_index(1)

#二:利用sheet表名字获取内容

>>> sheet2 = workbook.sheet_by_name('转发量')

#查看所获取表的名字及行列数

#如果只知道索引不知道表名,可通过该方法查看表名

>>> sheet2.name

'评论量'

#查看行数

>>> sheet2.nrows

33

#查看列数

>>> sheet2.ncols

2

#获取某行的值,括号中为位置索引(索引从0开始),以列表形式输出结果

>>> sheet2.row_values(2)

[43078.0, 1564.0]

#获取某列的值

>>> sheet2.col_values(1)

['评论量', 122452.0, 1564.0, 77357.0, 876.0, 74615.0, 1278.0, 75320.0, 1626.0, 85765.0, 4019.0, 109932.0, 1141.0, 195972.0, 3264.0, 134748.0, 45153.0, 111002.0, 3955.0, 105359.0, 4951.0, 86047.0, 3665.0, 41471.0, 5215.0, 78227.0, 1372.0, 100985.0, 782.0, 133079.0, 945.0, 91699.0, 248.0, '']

#行列的值支持位置索引,示例获取第一列第一个位置的内容,位置表示(列,行)

>>> sheet2.col_values(1)[0]

'评论量'

#仅获取某一单元格的内容,括号(行,列)

>>> sheet2.cell_value(0,1)

'评论量'

细心的你应该会其实上面展示了两种不同的方式来获取某一单元格的内容,不同点在于用于索引的列和行的位置调换了。

下面说说开头导入的另外一个datetime库,主要说明excel文件中日期格式存在的数据,其实主要就是日期了。

小编示例的sheet2即评论量表格中,第一列存放的是日期格式的日期数据

excel部分截图

但是在上面的>>> sheet2.row_values(2)输出结果中日期一列却不是所想要的结果,这就是由于格式错误造成的,为了正确输出结果,就可使用开头所导入的datetime库(标准库不需另外安装)

#括号中workbook.datemode为日期模式,必填,以元组形式输出

>>> xlrd.xldate_as_tuple(sheet2.cell_value(1,0),workbook.datemode)

(2017, 12, 8, 0, 0, 0)

#将以上结果赋值给date_value,以下操作,即可以特定格式输出信息

>>> date(*data_value[:3]).strftime('%Y/%m/%d')

'2017/12/08'

示例excel数据文件已上传至QQ群

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180109G0WKO600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券