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

简介: 前言 数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。 标准的 Excel 文件(xls/xlsx)具有较复杂的格式,并不方便像普通文本文件一样直接进行读写,需要借助第三方库来实现。

前言
数据处理是 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表中的数据。先看一下代码:

-- 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 的时间对象:

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

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库的使用
先看一个示例代码:

--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进行读写文件,这对于经常处理相同格式的表格有很大帮助。希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。

目录
相关文章
|
27天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
28天前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
3月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
163 2
|
4月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
83 2
|
4月前
|
Python
Python 自动化操作 Excel - 02 - xlwt
Python 自动化操作 Excel - 02 - xlwt
56 14
|
4月前
|
Python
Python 自动化操作 Excel - 01 - xlrd
Python 自动化操作 Excel - 01 - xlrd
54 9
|
4月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
38 1
|
4月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
157 1
|
4月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
84 2
|
4月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
48 0

热门文章

最新文章

推荐镜像

更多