日常工作中,对Excel处理的场景非常多,针对一些大批量文件的处理,找到规律,都是可以通过制作工具完成。
比如:一个汇总资料的列表,然后将对应列的数据填入目标模版中,并做一些简单的运算。这种场景是不是很熟悉呢?
数据状况
1、汇总列表如下:其中每一行代表一个项目,项目包含若干子项。
2、目标模版列表如下:目标模版是将汇总列表的信息按照规则填入,并做一些简单的计算生产,大致模版如下:
3、如果汇总列表项目较多,要单独一个项目生产一个Sheet列表,常规操作会非常耗时,如果有一些简单的核算关系,也会增加这个工作的难度。
工具设计
接下来,简单介绍一下软件核心地方,
- 核心库使用如下表:主要用到Pandas 和openpyxl可以,用于数据的提取和填充;
import xlrd
from xlutils.copy import copy
import xlwt
import pandas as pd
import numpy as np
import time
from openpyxl import load_workbook
2、由于是制定目标设置,可以按照如下规则,逐个对特定位置数据进行填充,代码较多,但是都只需要做一次,可以解决长期的事情,还是值得的。
if TmpList16[i]!=0 or Tmp2List16[i] !=0:
print(SetHeadList[HeadIndex])
local1 = 'D' + str(WriteIndex)
local2 = 'F' + str(WriteIndex)
local3 = 'C' + str(WriteIndex)
print(local1,local2)
sheet[local1] = TmpList16[i]
sheet[local2] = Tmp2List16[i]
WriteIndex=WriteIndex+1
HeadStr = SetHeadList[HeadIndex]
replacestr = str(WriteIndex - 10)
HeadStr = re.sub("\d+", replacestr, HeadStr)
print(HeadStr)
sheet[local3] = HeadStr
结果展示
最终完成的工具如下图,并处理了50个文件,合计耗时:43.22s
速度尚可,比手工处理肯定快非常多。
完成表达如下:
总结心得
此项目是一个做审计的股友需求,她工作的大多数时间,都在为甲方提供这种类似的报表,数据量较大,手工做的容易出错,而且处理效率非常低,于是她想到通过算法的方式来实现。
- 在完成这个项目后的几个月,她的每个月绩效全优,准确率基本在100%,甲方表扬。
- 再过几个月,他们原本7个人的团队只剩下3个人了,她当上了这个团队的经理。
- 随着技术的进步,很多的工作都会被机器替代,我们能做什么?
- 我不认为如上的技术有多难,关键是她能根据自身的需求,有想法通过技术实现,好的想法才是我们立于不败之地的关键。
让工作更高效,更多的时间去享受生活吧。