标题:vfp调用excel生成报表,需填写大量数据,有什么办法提高效率?
只看楼主
rola_zhang
Rank: 2
等 级:论坛游民
帖 子:12
专家分:11
注 册:2009-11-13
得分:0 
尝试了两天,有了较好的结果。用全局变量_CLIPTEXT来实现VFP和Excel之间的拷贝和粘贴,可以实现大批量数据赋值。最初,我用_VFP.DataToClip来实现,其赋值数据始终带着字段名,用起来很不爽,后来输出全局变量_CLIPTEXT(_VFP.DataToClip复制的数据保存在这个变量中),发现用_VFP.DataToClip复制的数据其结构非常简单,为了避免多余的字段名这行数据,于是我就没有用_VFP.DataToClip,自己直接填写_CLIPTEXT,出人意料的是效率居然比_VFP.DataToClip还高,我想可能是_VFP.DataToClip里有其他一些参数的判断语句(如delimiter类型).输出数据的填写到_CLIPTEXT的格式如下:'aaaaa'+chr(9)+'bbbbb'+chr(9)+chr(9)+'ccccc'+chr(13)+chr(10)。chr(9)是Tab的值,表示列delimiter,chr(9)+chr(9)表示中间这列输出为'',chr(13)+chr(10)表示回车换行。这样一个数据表示填写某行的4个单元格。如果只输出一行,chr(13)+chr(10)可以不加。同理只需按照这个格式把多行的数据组成一串输出即可。我的报表性能通过这种方式,性能提高了300%,真是爽啊!

另外,Select/Merge等Excel语句尽量少使用,可以合并成成一条的语句表示的,尽量合并。

顺便提醒,这种方式不适合用在已经合并的单元格,如果使用,一定要按照基本单元格来组成数据输出,且合并单元格里的每个基本列必须填写数据(空数据也认可),输出的同时会自动拆分那些已经合并的单元格。
2009-11-17 17:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-292171-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.324938 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved