ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2453|回复: 15

[原创] [ Excel-Python ] -10:让 Excel 插上 Python 的翅膀 主题小结

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-7-6 12:23 | 显示全部楼层 |阅读模式


让 Excel 插上 Python 的翅膀 主题小结


0. 引子

大家好,前段时间有点空,恰好和朋友聊到用 Python 助力 Excel 的话题,就抓紧出差途中的零星时间,写了几篇文章,简要叙述了用 Python 操作 Excel 的知识。很高兴看到很多朋友对这个话题感兴趣,也感谢许多网友督促更新,谢谢。

但确实工作太忙了,好久没有更新,见谅!
今天又在高铁上,有点时间。
回顾一下前面的帖子,基本概念、思路都讲到了。今天先做个小结吧,因为我确实不能保证有时间及时更新。再次致歉!!
此后有机会,可能会不定期提交几贴。

1.  技术思路

通过前面的帖子我们看到,用 Python 操作 Excel ,技术上,可以简单地分成两种思路:

思路1:用代码将 Excel 的内容读入系统,对读入的数据按需进行处理,得到所需的结果。这些结果可以直接使用,或者写回 Excel 文件。
思路2:用代码直接操纵 Excel 文件本身,或者直接操纵处理 Excel 中的数据。


- 题外话1

技术实现上,一个有意思的问题是:为什么这么多人在讲如何用 Python 操纵 Excel,咋很少看到有人讲用 Python 操纵 WPS ?

一方面,是因为 Excel 的数据结构是开放的。特别是升级到 Excel 2007以后好像是这个版本,记不清了,反正就是扩展名改为 xlsx 之后。(当时微软还在推动将Office文档的数据结构作为国际标准,推动大家联署签名,当时正好在微软北京开会,有相关人员在会场让大家签名,许多人在签。我是一个不搞清楚为什么就不随意签字的人。搞清楚了之后,我没签。做标准的、开放的数据结构,我支持。但微软自己想成为国际标准,我弃权。))


下面我带大家认识一下 Excel 的 xlsx 文件的结构:

把一个 Excel 文件的扩展名改为 .zip。例如,将 orders.xlsx 文件的文件名改为 orders.zip。注意不是用压缩工具压缩成 zip,而是直接将文件重命名。
然后,您假装这是一个 zip 压缩文件,打开这个假装的压缩包。可以用 winrar,也可以用Windows资源管理器直接打开。(不懂为啥许多人要用winrar?Windows 资源管理器自带压缩啊,右键点一个文件即可发送为.zip文件。双击.zip文件即可打开。我安装winrar,仅仅是因为一些人发给我的文档是rar,抓狂。
这个假压缩文件,其实也算是真压缩文件了,长这个样子:

image.png

我们看到,有完整的、复杂的层级结构。您可以尝试一层层去看,去用纯文本工具如 Notepad++ 打开里面的文件,可以找到您的数据。
具体我就不展开了。

多说一句, Word 也是这样的。请您测试一下:把一个有图片的 .docx 文件,扩展名改成 .zip。打开这个压缩包,可以看到你文档中的任何东西。
最有意思的是,所有图片,集中放到一个 images 文件夹中。

所以,您如果想有一个办法把一个 Word 文档中的所有图片拿出来,方法就是把这个 images 文件夹考出来啊。
还有一个有意思的话题:早期的 .doc 文档,我们知道不能把一个图片来回调整大小,越折腾越模糊。而 .docx 文档,图片随便折腾,还会保持清晰度。原因就是,原图片在 images 文件夹中存着呢,您折腾,只是在设置它的显示大小及方式,并没改原来的图片本身。

话说回来,刚才我说的是,Excel 的数据结构做得很好,很清晰。所以可以很好地用代码操控。

- 题外话2

其实,如果我们直接写代码去控制 Excel,我们自己写代码去操纵上面谈到的数据结构,也足够复杂。

但是,Python 的流行原因,Python 强大之处,在于有大量开源的、现成的库,大量现成的模块,可供我们使用。
其中,全世界有大量的热心人,写了很多对 Excel 进行处理的模块。例如 Pandas 自带的模块、xlwings 等。
但 WPS,就没有这个生态了。真希望有人做这些贡献啊。

- 回到技术思路1

技术思路1, 就是将 Excel 中的数据,直接读入计算机系统中,然后,这些数据已经和 Excel 没有关系了。用 Python 进行处理、使用。
当然,如果处理结果需要写回 Excel,to_excel() 写回去就是了,可以写回源文件,也可以新建一个。

Python 的 Pandas ,本身就提供了很好的支持。因为 Pandas 中的 DataFrame ,就是二维表结构,和 Excel 的 sheet 完全相符。

当然,有很多细节问题。在前面的帖子中,许多读者提出一些问题,能简单回答的,我就直接回复了。但有些一两句说不清的,希望以后有机会可以细讲。
看来,真有必要写一本书,来细细展开讲啊。(不敢再提书的事儿了,上一篇提了一句,管理员直接把我辛辛苦苦写的帖子删了,大大打击了我的积极性。幸亏申述找回。)
有兴趣深入钻研的朋友,可以看 Pandas 的官方文档相关部分:https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html,以及此链接的上下文相关文档。

- 回到技术思路2


简单来说,第二条思路,就是关注的是 Excel 文件本身。更关注处理 Excel 文件,或者直接操纵文件中的内容。
这其中,目前看到最好用的模块,就是 xlwings。真的很方便,其官方网站都说:xlwings - Make Excel Fly!  此言不虚。

我们在上一个帖子中,举了很多例子,大家看到了它的价值。也认可了用 Python 处理 Excel 有不同于 VBA 的强大之处。
同样,有很多细节要讲。目前精力不济啊,见谅。
有兴趣的朋友,建议看官方文档:https://docs.xlwings.org/en/stable/


2. 应用思路

从应用需求的角度,要具体分析。

如果您更关注数据,可以用 Pandas 的 read_excel() 方法,把数据读入系统去处理。这种情况,可以把 Excel 理解为数据收集工具。大量的数据、零散地存在于各个部门各个人员,例如周销售报表、客户填的一些资料等。如果有固定的格式,就可以写代码,批量读入,集中处理。然后存入数据库,做更多分析、处理、存档等。

如果更关注文档,例如上一帖的例子,需要批量创造 Excel 文档,或者批量修改 Excel 文档,可以使用高效的 xlwings 等模块。

另外,在其他一些场合,例如,结合使用 Word 与 Excel,结合使用 CRM 系统与 Excel,结合使用 OA 系统、财务系统 与 Excel 等等场合,都可以让Python发挥巨大的作用。

许多朋友在对比 VBA  与 Python,其实,各有长处吧。
VBA 在 Excel 内部工作,写宏。
Python 可以在每部工作,我的帖子里没有讲到。(看来真得找时间继续写啊),也可以在 Excel 外边工作。前面各贴都是这样的例子。

总之,用 Python 操控 Excel,为我们提高工作效率提供了更多的可能。

学习建议

我喜欢看系统化的官方文档,同时动手操作。
给出几个官方链接,供参考:

Pandas 入门教程: https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html
Pandas 用户指南:https://pandas.pydata.org/docs/user_guide/index.html
Matplotlib 官网:https://matplotlib.org/
xlwings 官网:https://www.xlwings.org/
xlwings 官方文档:https://docs.xlwings.org/en/stable/




今天这篇,没有具体的代码,没有展开举例。时间太少,这一篇,权当小结吧。
希望更多的朋友在 Excel 与 Python 间翱翔!
一起加油!

——  我跑,故我在。 HiFrank


<<<  上一篇:
[ Excel-Python ] -9:让 Excel 起飞的超强 Python 库:xlwings



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-7-6 15:56 | 显示全部楼层
xlwings毕竟是商用的,看一下openpyxl,虽然不怎么完善,可以用xlwt,xlutils,xlrd之类的作补充。其他还有对应word和ppt的python-docx和python-pptx.

TA的精华主题

TA的得分主题

发表于 2021-7-6 16:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-7-6 16:11 | 显示全部楼层
顺便说一下sqlalchemy,pandas可以通过它可以和多种主流数据库连接,实现oop,更换数据库,编写代码都很方便,用read_sql,to_sql就可以读写。

TA的精华主题

TA的得分主题

发表于 2021-7-6 16:13 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 HiRunner 于 2021-7-6 20:17 编辑
sheeboard 发表于 2021-7-6 15:56
xlwings毕竟是商用的,看一下openpyxl,虽然不怎么完善,可以用xlwt,xlutils,xlrd之类的作补充。其他还有对 ...


嗯,有很多可以用的库,希望可以多写几篇,继续展开

TA的精华主题

TA的得分主题

发表于 2021-7-6 16:14 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sheeboard 发表于 2021-7-6 16:11
顺便说一下sqlalchemy,pandas可以通过它可以和多种主流数据库连接,实现oop,更换数据库,编写代码都很方便 ...

嗯嗯,其实这个系列,继续写的话,可以写很多

TA的精华主题

TA的得分主题

发表于 2021-7-6 19:58 | 显示全部楼层
HiRunner 发表于 2021-7-6 16:13
嗯,有很多可以用的库,曾想过介绍一系列,精力不济。您可以写几篇,继续展开

看我的回帖,已经写了不少实例了,像lz说的一样入门可以看官方文档,其实网上相关资料太多了,随便找点就可以了,还有毕竟这里是vba论坛,不是python论坛,说多了容易引起争论。

TA的精华主题

TA的得分主题

发表于 2021-7-7 08:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习中,期待楼主的更新

TA的精华主题

TA的得分主题

发表于 2021-7-7 09:02 | 显示全部楼层
Frank介绍的python与Excel的内容很吸引人,每一篇都看了。Python也学了一点点,我感兴趣的是怎么用Python来更快更好的解决Excel中遇到的问题,特别是用了VBA还不能很好解决的问题,希望能出现更多的懂Python和Excel的高手,能看到更多的实例介绍。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-7-7 09:10 | 显示全部楼层
蓝桥玄霜 发表于 2021-7-7 09:02
Frank介绍的python与Excel的内容很吸引人,每一篇都看了。Python也学了一点点,我感兴趣的是怎么用Python来 ...

谢谢。其实有很多内容可以写。一方面,精力确实不济。另一方面,再写的话,就是许多技术细节了,单作为帖子可能会显得艰涩枯燥。所以做了个小结。后面有好的思路,还请多多建议,共同学习。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-25 22:24 , Processed in 0.048017 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表