我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python与Excel不得不说的事

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python与Excel不得不说的事

Python 与 Excel 不得不说的事

数据处理是 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。

不过今天只说说这三个。

(更新:有人提到另外几个 Python 处理 Excel 的库,有些的确会比 python-excel 系列好用。之后会再做一篇对比,敬请期待。

另外,关于为什么不用 VBA、Java、C#……处理 Excel。其实本文的出发点是对于 Python 使用者来说,操作 Excel 的一种基本方式,并非否定其他语言和方法。)

安装

安装的方法没啥特别的,只是得装三遍。可以下载安装包、下载代码压缩包、或者通过 pip 等。可参考 如何安装 Python 的第三方模块 - Crossin的编程教室 - 知乎专栏

如果安装过之前推荐的 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)
# 遍历所有表单
for s in book.sheets():
    for r in range(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 中的方法。

from xlrd import open_workbook
from xlutils.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



来自:https://zhuanlan.zhihu.com/p/22261597



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python与Excel不得不说的事

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python与Excel不得不说的事

Python 与 Excel 不得不说的事数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。如果仅仅是要以表单形式保存数据,可以借助
2023-01-31

Zabbix与Python不得不说的基情

分享提要在平时的工作中,Zabbix对于运维来说是一个非常重要的工具,在马哥的课程中也有相当的体现。Zabbix的图形界面已经相当漂亮了,今天Derek老师就会带领大家一起来定制属于自己的监控页面哦!大咖身份Derek国内某小型互联网运维工
2023-01-31

字字谏言!Python入门学习教程:关于Python不得不说的事儿

作为程序员,你肯定遇到过这样的领导:“别人还没走,你先走了不合适吧。”“不能确定功劳,总得有苦劳吧!你看别人9点谁走了?”说到996,这很有可能是诱因之一。所以很多程序员会在学习了Java、C的情况下,依然转头Python的怀抱。提升工作效
2023-06-02

TiDB 在金融场景里面那些不得不说的事

今年春天突如其来的新冠病毒疫情,在一定程度上改变了人们的生活、工作习惯,给各行各业带来了巨大影响。银行也难逃“池鱼之殃”:传统商业银行的盈利能力、资产和信贷规模都受到了一定程度的影响。疫情期间,人们对线上银行服务的需求激增,原本深受诟病传统银行的技术架构,又一
TiDB 在金融场景里面那些不得不说的事
2015-02-06

8 个不得不说的 MySQL 陷阱

Mysql安装简单,速度较快,功能丰富。另外它还是开源运动的标杆,它的伟大成就向我们展示了一个成功的公司是可以建立在开源代码之上的。然而用过mysql的人都曾对着显示器挥舞过拳头。但你不可能发明一种每秒能保存成千上万行互联网数据,并且一点错
2022-05-17

node.js不得不说的12点内容

1.node.js,服务器端的javascript,它允许在后端(脱离浏览器环境)运行javascript代码。 2.事件驱动、异步式I/O的编程模式(单线程)是其核心。 3.node.js的javascript引擎是v8,来自google
2022-06-04

python不得不学的理由!

Python 不仅仅是一个设计优秀的程序语言,它能够完成现实中的各种任务,包括开发者们日复一日所做的事情。作为编制其它组件、实现独立程序的工具,它通常应用于各种领域。实际上,作为一种通用语言,Python 的应用角色几乎是无限的:你可以在任
2023-01-30

【基本功】不可不说的Java“锁”事

并发编程是Java程序员必备基本功,今天“基本功”专栏向大家推荐一篇深入解析Java锁机制的文章。Enjoy!前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自
2023-06-02

看得见的“岛”与看不见的“智慧”

  俗话说:“耳听为虚,眼见为实”。都说华为把福州海峡国际会展中心所在的小岛,打造成了“智慧岛”。您亲眼所见了吗?  我亲眼所见了!并且有图有真相!我来带您全方位的去逛一逛!  您看得见场馆大门的闸机,但是您看不见人脸识别背后的算法。  您
2023-06-04

Python 2.7版本与3.6的不同

许多Python初学者都会问:我应该学习哪个版本的Python。对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本。等学得差不多了,再来研究不同版本之间的差别”。许多Pyth
2023-01-31

C与Python的不同在于速度

这篇文章我在一个叫做The Unix Geek的博客中看见,刚好最近对这方面比较感兴趣,就顺手翻了过来,可以探讨探讨。简介Python是个非常流行的解释型脚本语言。C是一个非常流行的编译语言。由于其编译的性质,导致C一般比Python要快,
2023-01-31

在Excel中文件与其扩展名所指示的格式不同

是的,Excel中的文件与其扩展名所指示的格式可能不同。扩展名仅用于指示文件的类型,但并不意味着文件的实际内容和格式与扩展名完全一致。举个例子,一个Excel文件的扩展名可以是.xlsx,这通常表示它是一个以XML格式保存的Excel工作簿
2023-09-14

说Python内置函数并不是万能的原因有哪些

这篇文章主要讲解了“说Python内置函数并不是万能的原因有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“说Python内置函数并不是万能的原因有哪些”吧!1、内置函数的查找优先级最低内
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录