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

如果仅仅是要以表单形式保存数据,可以借助 CSV 格式(一种以逗号分隔的表格数据格式)进行处理,Excel 也支持此格式。但标准的 Excel 文件(xls/xlsx)具有较复杂的格式,并不方便像普通文本文件一样直接进行读写,需要借助第三方库来实现。

常用的库是 python-excel 系列:

xlrd、xlwt、xlutils

xlrd - 读取 Excel 文件

xlwt - 写入 Excel 文件

xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等

尽管这是目前被用得最多的 Excel 库,我还是很想吐槽为什么这三个包不能放在一个模块里……另外它们有个缺陷,就是只能处理 xls 文件。如果你想用新版本的 xlsx,可以考虑 openpyxl 和 xlsxwriter。

不过今天只说说这三个。

安装

安装的方法没啥特别的,只是得装三遍。可以下载安装包、下载代码压缩包、或者通过 pip 等。

如果安装过之前推荐的 anaconda,那么就已经有了 xlrd 和 xlwt,但 xlutils 没有附带在安装包中,使用时仍需另行安装。

读取

结合一段简单的代码来看:

import xlrd

# 打开 xls 文件

book = xlrd.open_workbook("test.xls")

print "表单数量:", book.nsheets

print "表单名称:", book.sheet_names()

# 获取第1个表单

sh = book.sheet_by_index(0)

print u"表单 %s 共 %d 行 %d 列"% (sh.name, sh.nrows, sh.ncols)

print "第二行第三列:", sh.cell_value(1, 2)

# 遍历所有表单

forsinbook.sheets():

forrinrange(s.nrows):

# 输出指定行

print s.row(r)

测试文件:

输出结果:

表单数量: 2

表单名称: [u'Group.A', u'Group.B']

表单 Group.A 共 7 行 3 列

第二行第三列: 15.0

[text:u'Rank', text:u'Team', text:u'Points']

[number:1.0, text:u'Brazil', number:15.0]

[number:2.0, text:u'Russia', number:12.0]

...

常用的方法:

open_workbook 打开文件

sheet_by_index 获取某一个表单

sheets 获取所有表单

cell_value 获取指定单元格的数据

写入

还是看代码:

import xlwt

# 创建 xls 文件对象

wb = xlwt.Workbook()

# 新增一个表单

sh = wb.add_sheet('A Test Sheet')

# 按位置添加数据

sh.write(0, 0, 1234.56)

sh.write(1, 0, 8888)

sh.write(2, 0, 'hello')

sh.write(2, 1, 'world')

# 保存文件

wb.save('example.xls')

生成文件:

常用的方法:

Workbook 创建文件对象

add_sheet 新增一个表单

write 在指定单元格写入数据

修改

很遗憾,并没有直接修改 xls 文件的方法。通常的做法是,读取出文件,复制一份数据,对其进行修改,再保存。

在复制时,需要用到 xlutils 中的方法。

fromxlrd import open_workbook

fromxlutils.copy import copy

# 打开文件

rb = open_workbook("example.xls")

# 复制

wb = copy(rb)

# 选取表单

s = wb.get_sheet(0)

# 写入数据

s.write(0, 1, 'new data')

# 保存

wb.save('example.xls')

修改后文件:

特别要注意的是,选取读取表单时,要使用 sheet_by_index,而在选取写入表单时,则要用 get_sheet。不要问我为什么,我也很想知道这么设定的用意何在……

时间转换

如果表单中有时间格式的数据,通过处理之后,你会发现时间数据出了差错。

输出单元格内容:

[number:8888.0, xldate:42613.0]

因为这里 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)

具体细节及更多功能这里不展开说明。

以上便是 Python 操作 Excel 文件的一些基本方法。实际使用过程中遇到问题或者需要了解更多功能,永远记住两个词:

RTFM、STFW

:)

【编辑推荐】

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0

python与excel结合-Python与Excel 不得不说的事情相关推荐

  1. 再见 VBA!神器工具统一 Excel 和 Python

    作者 | 东哥起飞 来源 | Python数据科学 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Noteb ...

  2. 重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言

    如果微软的 Excel 中支持了人生苦短的 Python,你还会喜欢那个直接且易上手的 VBA 编程吗? 近日,据国外媒体 BLEEPINGCOMPUTER 报道,微软正考虑添加 Python 为官方 ...

  3. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  4. python分析excel数据-对照Excel使用Python进行数据分析,更快掌握

    Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...

  5. python不能处理excel文件-python处理excel文件(xls和xlsx)

    一.xlrd和xlwt 使用之前需要先安装,windows上如果直接在cmd中运行python则需要先执行pip3 install xlrd和pip3 install xlwt,如果使用pycharm ...

  6. excel调用python编程-用Python如何开发Excel宏脚本?新手必学

    今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python. 基本环境 操作系统:Windows 10 x64 ...

  7. python与excel结合-使用Excel和python来做回归分析

    使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...

  8. python读取excel表格-python怎么读取excel表格

    OK,我们一起捋一捋,首先要新建或打开一个Excel文件,然后选择某个工作表,也就是上图中的sheet,最后读取或设置单元格的值.与此相对应的,在openpyxl中,有三个概念:Workbooks,S ...

  9. python怎么用excel-python怎么操作Excel

    大家好,我们今天来一起探索一下用Python怎么操作Excel文件.与word文件的操作库python-docx类似,Python也有专门的库为Excel文件的操作提供支持,这些库包括xlrd.xlw ...

  10. python读取数据文件-python多种读写excel等数据文件的方式(收藏篇)

    前言: python处理数据文件的途径有很多种,可以操作的文件类型主要包括文本文件(csv.txt.json等).excel文件.数据库文件.api等其他数据文件.下面小编整理下python到底有哪些 ...

最新文章

  1. 分库分表:如何做到永不迁移数据和避免热点?
  2. 【转】Java中File常用的方法汇总
  3. Linux学习笔记--对文本的操作及正则表达式
  4. 自制一个 elasticsearch-spring-boot-starter
  5. [转]终结PHP中文乱码的问题
  6. 近期值得读的10篇GAN进展论文
  7. OpenGL 实例化属性的实例
  8. c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法
  9. python pca双标图的含义_PCA双标图 - 箭长度
  10. @SessionAttributes
  11. c++11 多线程编程(一)------初始
  12. 研究WPS Office的LINUX postinst脚本,发现了错误,应该学习柳氏风格
  13. 手游开发之lua的class函数详解
  14. 浏览器cookie被禁掉,该如何去解决
  15. HOOK技术原理与实现技术初探
  16. linux 蓝牙hci,实战Linux Bluetooth编程(三) HCI层编程
  17. Hexo个人免费博客(二) 创建主界面分页签和新博客
  18. 内存池 - 原理分析(一)
  19. 洛谷 P1008 三连击 题解
  20. 算法系列——弗洛伊德算法(Floyd)

热门文章

  1. 识别TLS加密恶意流量
  2. 技术报告:APT组织Wekby利用DNS请求作为CC设施,攻击美国秘密机构
  3. js滚动页面到固定位置进行操作
  4. shared_ptr 用法
  5. Java算法测试的输入模板
  6. Java面向接口编程,低耦合高内聚的设计哲学
  7. 浏览器更改实现webstrom等前端编辑器的同步更新
  8. windows下python3.5使用pip离线安装whl包
  9. poj 3026 (最小生成树)
  10. WEB打印大全(转)