最近收到运营同事的需求,能不能根据excel中的身份证号计算年龄,然后按年龄段将信息分成多个excel表格,方便他们在后台处理业务。听到这里,我第一时间反馈这个在后台做应该很简单啊,怎么找上我一个前端仔啊,打工人的天都要塌了啊。了解情况后,原来他们并没有交付源码,那就只能我出手了,毕竟自己的同事自己宠,记得给我加鸡腿啊!
首先,我们按同事的需求来分析一下我们的实现流程,分析需要做哪些工作:
1、工具使用人群年龄偏大,能多简单多简单,所以计划做一个exe小工具,双击打开即可使用;
2、读取excel,对身份证列信息进行切割,读取生日信息;
3、根据生日进行周岁计算,按年龄段对数据进行划分;
4、将划分后的数据输出到excel文件;
5、大功告成,准备接受同事的小花花;
需求和流程都分析完了,接下来第一件事,就是做技术选型。这里针对个人开发语言熟练情况和需求的特性,主要看了electron和python GUI。作为前端仔,第一时间肯定是想到用electron做桌面应用,而且之前没接触过electron,总对它有种朦朦胧胧的美。但是看完教程后,发现比我想象中要复杂一点,我还要再简单一点,遂放弃了该方案。于是转头盯上了python GUI,不是要简单,这个总够简单了吧(PS:python是世界上最好的语言!)。
废话说完了,接下来就请各位看官一起来看看,如何用一下午的时间拿python做一个exe小工具吧。
一、环境搭建
1、安装python环境,这里要特别注意,如果你在后续操作中遇到一些问题(请原谅我当时忘记截图了),可以考虑下是不是python环境问题,我开始装的32位的有问题,后来换成64位的就好了;
2、安装pycharm,这个看个人使用习惯,我用惯了idea全家桶,首选它了;
3、创建项目,总要给自己一点仪式感,然后就可以运行伟大的hello world了;
4、Congratulations,万事俱备,可以开始你的表演了
二、代码实现
1、先弹个框出来吧
虽然功能很简单,我们也要一步步来,先给自己吃颗鼓励丹,提升一下写代码的激情。no bb,show me you code!
代码很简单,就是引入tkinter,开启循环。我的需求很简单,所以直接用了python内置的GUI,如果大家有更复杂的需求,也可考虑wxPtyhon、pyQT等去实现。
注意:可能会提示Lib下没有tcl8.6和tk8.6,手动去复制过来就好了
2、翠花,上按钮
接下来,我们该考虑,要怎么接收需要处理的excel文件了。搞得太复杂不方便,那不得被人骂的青一块紫一块,所以就用最简单的文件选择,图形化好操作,隔壁小孩看了都说好,所以我们先放个按钮来触发一下黑魔法。
这里不得不额外插一句,现在的编辑器有了ai加持,太懂我了,都知道我下一句想写啥,但是我们这里先返回空就好了,一步步来,心急容易遭反噬。这一步就是简单的加了个按钮,设置它的文字,点击后的处理方法,关于布局排版大家可以自行百度一下很简单。运行后,就会看到多了个按钮,虽然不咋好看,将就着看吧
3、放开那个鼠标,让我来选文件
按钮有了,我们接下来该办正事了,弹出文件选择窗口,并且要接收选择文件的路径,作为后续处理用,继续上代码
这一步就是调用filedialog,得到选择文件的路径,打印一下
4、开始办正事
有了原始数据输入,接下来只要一步步去处理数据就好了。这里用到pandas作为表格处理工具,所以需要安装一下依赖(过程中提示少了啥就安装啥,相信大家都比我聪明),导入即可。接下来用pandas将数据读取出来遍历,然后计算年龄,在分别暂存起来即可,代码很简单,大家瞄一眼就会了
5、先别急着划走,马上就完了
接下来,只用将分好的数据,使用pandas写入新的excel文件就大功告成了
可以看到,在输出目录已经成功按年龄段分别输出了excel文件。到此为止,我们的主要业务功能已经完成,剩下还有一些小问题,如窗口大小调整、页面美化、年龄段可配置、文件操作、成功提示等,一步步去完善就好了,都比较简单,这里就不赘述了,完整代码会在文末提供。
你以为这样就结束了,少年,你还差了点啥
三、打包exe可执行文件
终于等到你,还好我没放弃。最最最后一步,就是打包成exe工具了,作为一个合格的百度程序员,我就不展开说说了,很多教程。这里只提醒各位读者大大几个我遇到的问题:
1、可以正常打包,但是运行exe文件时,提示找不到pandas,在打包命令加上--hidden-import参数就好了,如:--hidden-import=pandas
2、在pycharm终端内打包,能正常打包,运行exe时提示图中错误,解决办法:使用cmd命令行打包,猜测是venv虚拟环境造成的,没有再去深究了,如有大佬知道原因和解决办法,烦请不吝赐教,先行谢过!
四、最终成果展示
注:测试用的身份证号,都是工具随机生成的
写在最后
能坚持看到这里的,相信都是真兄弟了,第一次写文比较啰嗦,不喜就喷。如有错误之处,希望大佬能出手帮忙斧正。
仓库地址:gitee.com/secman/exce…
都看到这了,不点点赞再走吗!