一张图学会python应用到excel-Python | 编写一个简单的Excel处理脚本

2cf5978b3e20

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

需求简述如下:

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

2cf5978b3e20

如图

显然这个是通过财务处网站导出的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.考虑用户友好,需要写一定的异常抛出与处理。

接下来就是编码部分

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

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

2cf5978b3e20

根据路径得到DataFrame

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

2cf5978b3e20

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

没有做异常处理。

2cf5978b3e20

写入到文件

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

2cf5978b3e20

主函数

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

2cf5978b3e20

2K——22406K

下面看下运行及处理效果

2cf5978b3e20

2cf5978b3e20

emmm

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值