9月中下旬我很少更新博客了,这半个月我去做项目了,学校学生处忙助学贷款的老师嫌打印贷款借据和合同太麻烦了,很多过程都要手动操作,但川大不存在这回事! 于是乎找到了我,让我做软件,好。。。做就做吧.... 我答应了。 主要涉及到操作WORD信函功能,从EXCEL中读取数据加载到word的信函(模板)中,再打印出来.... 在网上查了下,这属于word的二次开发技术 ,但学校图书馆这方面的书少之又少。 只能通过网络来获取相关方面的技术。 我面临着三种开发语言选择:VB,VC#,VC 。 我很想用VC做,但学校催的紧。 在网上问了下几个C++群的群主,让他们给点意见,他们都建议我用VB开发。说我没那么多时间玩技术了, 只能讲究效率。
用VB就VB吧,虽然系统运行效率会降低,但VB得控件属性控制方面比MFC强太多了。 熬了半个月的夜,这半个月我白天睡觉夜晚通宵编程,每天都从下午7点开始一直编到第二天早上7.8点左右。 我总感觉在清净的没有丝毫喧杂的夜晚精神才能集中起来,编起程来才爽快。
期间遇到很多技术难题,但都被我一一攻破。。 功夫是不会愧有心人的:在没有任何人指导的前提下独自完成了整个工程。 代码不算多,总共也就5000+行代码, 但该有的功能全有了。 但是有个问题一直是我心里的一块石头:由于EXCEL不支持ODBC接口的删除和修改(修改不是不支持,修改后的数据安全性没保障)功能,我只能采用外部组件,微软提供的EXCEL对象组件给其开个进程,让它在后台运行,前台通过手工代码来完成对其数据的操控。 但这样做的致命缺陷是:当需要删除或修改大量的数据时,后台要逐个修改EXCEL表格中的数据,这就导致系统的运行效率大大降低。当修改或删除数据记录集量超过300条时,需要2——3秒的系统响应时间才能修改/删除完毕。还有个问题就是:打印WORD文档之前,需要对WORD信函中的东西做大量的修改,这样的话,主进程只能消耗在WORD的信函处理上,主界面就卡死了(VB不支持多线程),用户看起来就跟死机了一样,我想通过多线程来搞定这个问题,但结果是:不能正常打印所需要的东西。(VB6对多线程的支持纯粹是差到极点了!但听说VB.NET对这个到是很好搞的。) 唯一的解决办法是:打印期间让整个窗口最小化,让用户看不到界面,这样它就不知道是否死机了。 没办法了,我目前先这样做了。 明天先将就着去交下工吧。。。 如果不行的话,对EXCEL的删除和修改反映慢的问题,我看看还能不能在ODBC接口上下功夫。 对于WORD的打印响应时间慢。。。 我无能为力了,除非再给我一个月时间让我去用VB.NET或VC写一遍。
哎,一切就看明天了。 如果学生处满意。。。 OK,我又回来了,重新回到这学期开始制定的学习计划!