一,项目需求
有一批原始Excel文件,每个文件里都有几千几万条记录,这些记录分别属于80多个机构。
例如:
指标xx.xls,包括:杭州银行,招商银行。。。等记录。
指标yy.xls,包括:上海银行,南京银行。。。等记录。
现在需要把这些机构的数据拆分出来,分别保存到独立的Excel文件里。
例如,将所有表格里的上海银行的资料,都抽取出来,放到一个workbook里,每个sheet分别是:指标xx,指标yy;其他银行类似。
二,难点
如果依靠人工手动去操作,那就麻烦了。假设15个文件,15*80=1200,那拆分数据,就需要手工复制黏贴1200次。有时候文件数量很多,有时候少一些,一般来说需要3.5天以上的时间,也就是28个小时以上。每个季度都会遇到一次这样的场景。(其实对于软件来说,文件多少都没影响,模式是一样的嘛。)
希望能够设计一个软件,在0.5小时内解决该问题。
三,解决办法
(一),方法一
第一步,拆分数据。
将每个原始Excel文件放到一个独立的文件夹里,例如:建立指标xx,指标yy。。等文件夹,每个文件夹里都有对应的一个文件。
编写一段vb代码,在Excel里执行,自动拆分数据,将杭州银行的数据加入一个集合,将上海银行的数据加入一个集合。
将这些集合里对应的记录保存到具体的表格,例如:上海银行.xls,杭州银行.xls,。。等等。
第二步,合并数据。
第一步执行完成,我们会得到这样的文件夹:
指标xx/{杭州银行.xls,上海银行.xls,南京银行.xls}
指标yy/{招商银行.xls,上海银行.xls,网商银行.xls}
。。。。
接着,我们需要合并数据,得到这样的文件夹结构:
上海银行/{指标xx.xls,指标yy.xls}
招商银行/{指标xx.xls,指标yy.xls,指标zz.xls,指标tt.xls。。。。}
。。。等等
第三步,合并到workbook。
将这个文件夹里,所有的Excel文件,都合并到一个Excel里,之前的文件作为sheet。
(二),方法二
不使用vb语言,因为对vb不熟悉;使用c#,直接操作Excel表格,逻辑和上面类似,但是可以稍微简单一些。
四,具体设计
(一),拆分数据程序设计
拆分算法原理如下:
将同一个类型的行,放到一个集合中。
1,在vb中定义一个dic