这次回来,项目组人走了一大半,都出差去了,我也就照着请假之前强哥给我的学习技术清单来学习吧:AngularJs,bootsrap,smartadmin,html5,css3,一大堆的前台技术,哎,慢慢学吧,等学好了这些前台技术,以后还可以多赚些外快,或者为以后的创业积累一些技术资本。不过,看这些真心枯燥,不过看着老外搞得那些绚丽的网站,心理不得不佩服呀!
这些天来了一位新同事,还是我那个项目组的,一开始看外貌我还以为是社招的,谁知道和我一样是个应届毕业生,华农的,洪哥一直强调要我们俩竞争意识,我也没怎么放在心上。后来他找我帮他装oracle客户端,配置myeclipse的DB browser,还问我一些问题,不过我就当真如他说的“我看了好多书,操作方面缺乏一些”吧,不过他有一点我不太喜欢,就是很喜欢抱怨,总是说公司太坑上不了外网,说看ext文档看的要死···哎,兄弟,都是这么过来的好不好,淡定一些···希望真如他说的那样,以后可以和他多请教一些“学术问题”···
部门副经理洪哥看我一直在自学,就给我一项任务:将word、excel中的特定字符全部替换为输入字符,形式不限,可以c/s,也可以b/s。我自己回去想了一想,首先想到要lucene建立索引,根据关键字进行查找,再高亮显示,像word的查找功能一样,进行替换。于是连忙百度了一个c/s架构的类似于word的查找替换功能的例子,第二天再去问洪哥,发现原来自己搞错了需求,原来功能是要选中的文档中匹配的字符全部替换,可以多组进行替换。
根据需求再次想了一下:这样就不用lucene建立索引了,直接replaceAll,现在的关键是如何修改word与excel文档,并且一次性选择多个文档。这两个问题纠结了好久,知道poi包是可以处理office的,但是以前只是提取纯文本,现在要修改文本,所以只好百度,终于找到了相关的例子,但是对文档格式的有局限性,docx会出错;再来是文档的多个选择,一开始不想用其他jar包,直接用jsp+servlet处理,但是苦于每次的file的input只能选择一个文档,这还好,可以用js的动态添加element来解决,但由于浏览器的安全性考虑,不能直接获取选择文件的全路径,这可惨了,不能直接在源文档上进行修改,必须上传呀,这样也倒好,可以用swfupload进行多文件上传,效果比较好。经过一番思路的修改和反复测试,终于有了比较通顺的、可行的思路:用swfupload进行上传到一个临时文件夹中,上传成功后表单提交成组的字符与替换字符,遍历临时文件夹下的文档并查找替换,另存到特定文件夹下,将临时文件夹删除。代码也都实现了,但是有以下局限:文档格式仅限于doc与xsl,对于替换后字符包含源字符的会卡死(poi包中Range.replaceText()的bug)···
给洪哥看,洪哥又提了一些需求,成组的字符与替换字符要通过配置文件获取,可以动态增加或者删除字符。这些都不是什么大问题,做了上面那个,自己在页面的js方面的确花了很多功夫,看来前台真的不好搞呀!
总结:完成一项功能,思路是最重要的,很多代码网上都有,思路正确了可以省去不少麻烦,防止做到一大半因为一个细节无法攻破而重头开始做,同样,人活着也是,尤其是我们年轻的时候,当我们不知道怎么去选择的时候,拥有良好的、可行的思路会决定你的下半生。
到现在完成了三项任务,一个编码转换器,一个基于ext的基础管理系统,还有一个就是上面说到的字符转换器,因为公司的环境,无法与大家分享源代码,实在惭愧···