真是知道的越多,越能感受自己的无知。
近期要完成一样工作——对一个表格进行整理,原理挺简单,但手工绝对无法完成。表格所在的 CSV 文件体积有 13.2M 之多。由于需要对结果进行一些分析,我上周想着用 Rails 来做个网页,可以动态的显示数据的关联关系。这个工作在 Excel 里实际上是分类汇总,但如何对分类汇总的结果再来一遍分类汇总,我就不知道了。
然后上周大部分时间就做了这个。本来我觉得应该不是很难。Rails 虽然几年没写了,但基本原理我是知道的。MVC、ActiveRecord 组合起来的工具,可以方便的调取数据,获取结果。我觉得就算是操作数据库,写几个 SQL 就能完成的任务,让 Rails 来岂不是小菜一碟?结果跟我想的完全不一样。
首先就是 ActiveRecord 的问题,涉及的字段一多了,就复杂了,数据实在是让人头疼,有的时候就是不对。另一方面毕竟是七万四千多行的数据,效率也上不去。有的时候进行了一个调整,就看到 Rails 服务器后台的 SQL 语句不停的滚,我自己也能感受到效率的低下。
然后这个程序就陷入了死胡同。我上周五达到了这个进度,周末度过了忙碌的两天,一直也没有进展。到了昨天晚上,到了十点多,坐下来开始重新规划这个问题。这次我不用了 Rails,改用之前比较习惯的面向对象模拟,构建类,然后把每个单元对象放入数组中。分析的过程就是构建对象的过程,最后遍历一下数组,输出就得到了结果。一直做到凌晨两点半才简单的弄出了一个框架,这才睡下。
今天,把思路和结果给领导看了看,经过同意,就对输出进行调整。我还没有实验成功过让 Ruby 直接写 Excel 文件,所以还是输出的 HTML。当中表格换行的时机等等弄得我头昏脑胀,最后好不容易给弄好了,得到一个输出后有 3000 多页 A4 纸的表格。不过,我在导入到 Excel 中遇到了一些单元格合并的问题,看来之后还是要研究直接输出到表格。或者就是在办公电脑上用 Java 重写,不过那代码量估计会很多。