这是我第三个python小功能的制作,也是第一次拿自己会的一点点的东西帮同事做了一个小程序,正因为很曲折,我就记录一下,反思也许让自己学到更多,希望写的东西可以帮助别人。当然,作为一个菜鸟我写的肯定有很多不对的地方,如果真有人看并指出,我真的很感谢,我想有人教我,指出我的错误,我也能进步。不过还是要说,这是我的记录,有可能是这个时点比较符合我的逻辑判断,我自己也会慢慢接着学,进步后会来修正我的错误。
主要还是对于excel的数据处理:
1、首先从个人角度来说一下为了可以处理excel,我尝试了三套模块(附我的学习书籍)
(1)xlrd,xlwt,xlutils(我简称一下:3X模块)《从Excel到Python》
这是我开始会的,这是一套组合拳
功能:xlrd(读),xlwt(新建+写),xlutils(连接读写,+复制修改)
使用范围:因为组合所以较为适合xls格式的excel
优点:容易理解
缺点:保存后的xls文件不能二次编辑(编辑受限)
(2)xlwings《超简单用Python让Excel飞起来》蓝本
xlwings是之后我无法在3X模块下做到在单元格内部输入公式,随即转战学习xlwings模块,其拥有
表达式.formula = f'=(excel内部的函数公式例如:sum)'
而且从综合考虑,xlwings是最佳的,适用xls/xlsx
但是其有一个被动问题,就是如果出错了,我根本看不懂,例如下面这些报错:
1.pywintypes.com_error: (-2147352567, '发生意外。', (0, None, None, None, 0, -2147024809), None)
报错原因:这是我全篇使用xlwings模块时,分成两个自定义函数时,中间用的时app.quit(),但是app.quit只是关闭当前文件进程,往往不能把所有文件进程关闭,导致后面无法打开,所以最好要用app.kill()——所以我后面直接弃用app.quit(),反正我做的就是同步进程,一条线,之前的就应该全部关闭,app.kill() 很适合。
2.pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '不能访问只读文件“结果文件.xls”。', 'xlmain11.chm', 0, -2146827284), None)
报错原因:这是我准备3X模块和xlwings混合使用时发现,当3X模块完成部分数据处理后保存excel准备交给xlwings处理时,是打不开这个文件,也不能编写它,直接点开excel工作簿左下角都会显示受限编辑。
……当时只知道错了,却不知道该在哪个点解决,着实难受。(当然现在知道了)不过之所以说是被动,厉害的人不会出错那就没这个问题了。
优点:全面,可以在单元格里写公式
缺点:出问题了看不懂
(3)openpyxl《从Excel到Python》
解决不了时也学习了一下,不过最后还是因为其指适用于xlsx,同时《从Excel到Python》书上没有介绍如何将工作表复制到另一个工作簿上(当时需要有这个操作),再加上同样xlutils和openpyxl的冲突:zipfile.BadZipFile: File is not a zip file——所以也没怎么看。