美文网首页python热爱者
Python | 编写一个简单的Excel处理脚本

Python | 编写一个简单的Excel处理脚本

作者: 寒食君 | 来源:发表于2017-11-14 23:55 被阅读4955次

    前段时间,温老师找我说财务处的某老师平日处理大量的Excel,很多都是机械的重复劳动,不胜其烦。和我简单说了下需求,看我能不能写个程序帮一下忙。

    需求简述如下:

        一个多行多列的Excel文档有一列为“项目代码”,总共有多行各不相同数据,而“项目代码”这列下为无次序出现的重复数据。需求是将相同的“项目代码”所在行的数据挑选出来,并单独生成一个以此项目代码命名的sheet,在此sheet中将数据按照顺序排列。

    如图

    显然这个是通过财务处网站导出的Excel,首先想到的是,应该多设计几个接口,直接在服务端用SQL语句解决这个问题。但是现状是没有设计这些功能,那么只能在这个文件上做文章。那么,首先想到的就是Python,py处理这些简单数据应该是最便捷的。不过之前还没有做过,需要做一些准备工作。

    首先确定用需要用到处理表格数据的模块,xlrd、xlwt或者pandas,因为pandas听上去比较萌,这里选择这个,但是比较难受的一点是pandas 没有中文文档,有些操作想查询需要啃英文。

    我的思路是这样的:

        1.首先把Excel文件读取到内存中,但是文件不是固定和单一的,考虑到使用者,较简单的方式是让用户输入需要处理的文件的绝对路径。

        2.获取“项目代码”这列的所有数据,去重,排序,保存到一个project_code_list中。

        3.循环读取这个project_code_list中的值,比如读到“1064801601”这个值后,遍历内存中的DataFrame,获取所有项目代码为“1064801601”的数据,将其保存在一个新的DataFrame中。

        4.同时循环在源文件里写入新的sheet(使用project_code来命名),同时往这个sheet里写入数据。

        5.考虑用户友好,需要写一定的异常抛出与处理。

    接下来就是编码部分

    思路确实很简单,但是需要编码实现,以及如何尽量写得优雅,又是另外一回事了。

    因为手上还有其他事要做,所以代码没有写得很规范,异常处理也没有写,瑕疵比较多,但是既然功能实现了,也就懒得改了。


    根据路径得到DataFrame

        没有做异常处理与用户提示,假如用户输入了不存在的路径,那么程序会直接炸掉。所有这些都要注意。

    获得流写入到指定路径文件

        没有做异常处理。

    写入到文件

        这个函数写得很臃肿,其实应该另外定义一个handleExcel方法来专门处理数据,再用write2Excel来专门写入,另外相同的问题也是没有做异常处理。

    主函数

    最后就是考虑打包的问题,因为财务处老师办公室电脑上是肯定没有Python3环境和模块依赖的,最好直接给他一个exe可执行文件。查了资料,这边使用pyInstaller直接打包。

    2K——22406K

    下面看下运行及处理效果

    emmm

    数据没什么问题,该处理的也完成了,哎,就这样吧。

    源码点击这里

    相关文章

      网友评论

        本文标题:Python | 编写一个简单的Excel处理脚本

        本文链接:https://www.haomeiwen.com/subject/abwtvxtx.html