| 晓鸥 的个人资料Single Running照片日志列表 | 帮助 |
|
|
2月1日 编写VBA代码,生成EXCEL再次针对那个小的系统进行EXCEL输出的开发。 这次不仅仅是复制粘贴,因为客户不需要浏览数据,而是直接输出一个EXCEL文件。 ------------------------------------------------------------------------------------ 1、数据库操作代表,读取数据,存入recordSet内存对象; 2、遍历内存对象,依次将值写入已经创建的excel应用对象; 3、调整每个工作单的格式,以求美观; 4、弹出对话框,用户选择保存在何处,然后保存excel文件。 ------------------------------------------------------------------------------------ 先形后事,看看操作界面。比较简单的哦,默认帮你填写好当前年份月份,当然你还可以自己进行输入。然后点击输出就可以了哦。 所有的代码全部由该按钮button进行触发。 创建一个excel对象,全局控制excel的工作是必须的第一步。 要命的拼接SQL查询语句也是必须的工作 剩下的事情就简单好办了哦。 遍历数据对象集合,套两个循环,一次把每一cel的值都填写到对应的位置。 为了提高效率,发现如果每个格子都处理,则很消耗资源和时间。于是做了一次判定。如果是空值或者0值,则不填写。一下子效率高起来。毕竟测试的时候数据量还是比较小的。 可以想象,这个做法是最最保险的做法,但是效率似乎远远没有复制粘贴来的好。 复制粘贴的效率如此之高,但是看、查手册后,并没有发现针对recordSet相关的复制接口,因此也就不能直接使用了。那以后再议吧。 ------------------------------------------------------------------------------------- 最后,因为不是弹出一个excel,而是后台进行处理,而且时间很长。需要多个工作单的处理,所以需要加上进度条。这个进度条需要使用微软的activeX,可能在2007环境下还需要信任设置,否则是不起作用的。office 2007的设置真麻烦哦。 最后的代码工作就是让excel的application反复创建worksheet,并且移动一个位置,再重命名,名就是日期。 一切都结束后就会弹出一个对话框,供你保存excel文件哦。 看一下打开这个excel文件的效果哦。 最后那个excel默认的开启sheet1~sheet3我不知道如何删除,有高手指点一二吧。 1月16日 OLE 从ACCESS 到 EXCEL最近独立开发一个用access做的小单机应用玩玩. 基本需求就是录入一个表单,然后汇总数据. 由于access中不能使用report来导出内存对象,貌似如此.因此只能制作一个form,然后加载已经完成select的数据. 添加一个button,编写click事件代码. 首先从网络上找了一段添加OLE对象的代码: Public MyXL As Object Forms(FormName).SetFocus Sub CopyToExcel() 'GetExcel
---------------------------------------------------------------- 这里就不具体说明了.总之结构创建OLE对象,然后开启一个工作簿,并且将内存数据粘贴上去. 数据都过去后,那剩下的就是格式的调整了.在所有属性的调整中,本人一直在寻找相关的帮助手册,MSDN也逛了好几次.不过最后发现自己走错路线,原来这些excel相关的对象属性全部在excel的帮助中,一直去找access或者office tool是不对的. 以后看来OLE到什么,就去对方找帮助手册看对象属性列表即可. excel中最重要的就是range类,它的成员各类属性可以直接设定我们所需要看到excel形象. 最常用的可能就是value,直接改写内容值. 其次,就是对齐方式.老子看了好久,文档上写的居然是字符串常量,JB的不管用.最后我发急了,不用常量,直接写int值试试看,结果还真的可以.通过测试,原来文档上的常量字符串对应一个int值,这些枚举居然不是字符串值也是情理中,那么该死的MSDN怎么就不写清楚呢. 水平对齐:HorizontalAlignment {1,2,3,4,5} With MyXL.Application.ActiveSheet.Range("D4") 貌似测试下来,1就清除对齐,或者是auto,2是left,3是center,4是right,5未知什么应该也用不到. 于是本人联想到垂直对齐玩玩吧, 代码继续修改:VerticalAlignment With MyXL.Application.ActiveSheet.Range("D4") 貌似再次发现:1就是上top,2就是中间center,3就是下bottom,4未知 ------------------------------------------------------------------------------ 修改对齐后,还有修改字体,还好这个比较简单: With MyXL.Application.Selection.Font
-------------------------------------------------------------------------------- 感觉做OLE最郁闷的其实就是根据客户要求完善格式,以求美观,这个太没有技术,但又太重要了. 接下来就是要搞搞画线的问题了.............. |
|
|