春满大地,富贵花开。微雨众卉新,一雷惊蛰始。敬请关注微信公众号:AiryData。

Python使用xlrd和xlwt读写Excel的简单用法

Python Airy 2659℃ 0评论

前言

数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。

标准的 Excel 文件(xls/xlsx)具有较复杂的格式,并不方便像普通文本文件一样直接进行读写,需要借助第三方库来实现。

常用的库是 python-excel 系列:

xlrd、xlwt、xlutils

  • xlrd - 读取 Excel 文件
  • xlwt - 写入 Excel 文件
  • xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等

它们有个缺陷,就是只能处理 xls 文件。如果你想用新版本的 xlsx,可以考虑 openpyxl 和 xlsxwriter。

库的安装

如果你只是装了Python的话,你需要分别安装xlrd、xlwt、xlutils,安装方式看个人情况,为了方便,建议安装pip包,这样安装很简单,直接pip install 包名。如果你安装了集成环境,比如anaconda,我已安装,已经有了 xlrd 和 xlwt,所以我只需要再安装xlutils即可。

分析Excel文件的层级对象

要读取excel的数据,就要了解excel的结构,根据excel的结构一层一层的去读取数据。

excel有三层级对象,workbook,sheet,和cell。一个excel文件就是一个workbook,所以在最初我们必须要打开这个excel文件,也就是workbook。sheet我们都很熟悉,就是表,我们都知道一个excel文件有时候会有很多的表,所以我们必须要选择是读取哪个表的数据,最后才是cell,cell其实就是格子,excel的表格就是一个二维数组,cell就是这个表格中的最小单元,也就是我们读取数据存储的地方。

xlrd库的使用

更多内容,参考链接:

http://xlrd.readthedocs.io/en/latest/

http://xlrd.readthedocs.io/en/latest/api.html

基础数据如下所示:

首先读取ad.xlsx表中的数据。先看一下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#-*- coding:utf-8 -*-
import xlrd

#打开xlsx文件
ad_wb = xlrd.open_workbook("ad.xlsx")
#获取第一张表的名称
row_data = ad_wb.sheets()[0]
print ("表单数量:", ad_wb.nsheets)
print ("表单名称:", ad_wb.sheet_names())

#获取第一个目标表单
sheet_0 = ad_wb.sheet_by_index(0)
print (u"表单 %s 共 %d 行 %d 列" % (sheet_0.name, sheet_0.nrows, sheet_0.ncols))
print ("第三行第三列:", sheet_0.cell_value(2, 2))

#直接输出日期
date_value = xlrd.xldate_as_tuple(sheet_0.cell_value(2,2),ad_wb.datemode)
date1 = xlrd.xldate.xldate_as_datetime(sheet_0.cell_value(2, 2), ad_wb.datemode)
print (date_value)#元组
print (date1)#日期

# 遍历所有表单,由于数据量大 ,这里只取前10条
for s in ad_wb.sheets():
    for r in range(0, 10):
        # 输出指定行
        print (s.row(r))

输出结果:

可以看到,上面的日期,已经被转换成了Excel的日期,这里是以数字类型展示的。

因为这里 xldate 有自己的格式定义。如果要使用正确的格式,必须转换:

new_date= xlrd.xldate.xldate_as_datetime(date, book.datemode)

date 是对应单元格的数据,book 是打开的文件对象。

可以看到我重新输出了日期结果(具体见代码)。

另外,在打开文件时,加上参数 formatting_info=True,可以保证在时间数据在 copy 时保持原样。

写入时间数据,则可通过此方法创建 excel 的时间对象:

1
xlrd.xldate.xldate_from_datetime_tuple

或者通过 xlwt.easyxf 指定时间格式:

1
2
style = xlwt.easyxf(num_format_str='D-MMM-YY')
ws.write(1, 0, datetime.now(), style)

xlrd常用的方法:

·       open_workbook 打开文件

·       sheet_by_index 获取某一个表单

·       sheets 获取所有表单

·       cell_value 获取指定单元格的数据

xlwt库的使用

先看一个示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#-*-coding:utf-8 -*-
import xlwt

#创建xls文件对象
wb = xlwt.Workbook()
#新建表单
sh = wb.add_sheet('A new sheet')
#按位置添加数据,前面两个参数是位置,后面一个是单元格内容
sh.write(0, 0, 'hello')
sh.write(1, 0, 'world')
sh.write(2, 0, 1234567)
sh.write(2, 1, '2017-04-10')
#保存文件
wb.save('xlwt_test.xls')

生成的文件如下所示:

小结

上面就是今天的主题内容了,今天分享下如何使用Python操作Excel进行读写文件,这对于经常处理相同格式的表格有很大帮助。希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。

如果想快速联系我,欢迎关注微信公众号:AiryData。

如需转载,请联系授权,谢谢合作。

转载请注明:数据之美 » Python使用xlrd和xlwt读写Excel的简单用法

喜欢 (5)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址