尝试了两天,有了较好的结果。用全局变量_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语句尽量少使用,可以合并成成一条的语句表示的,尽量合并。
顺便提醒,这种方式不适合用在已经合并的单元格,如果使用,一定要按照基本单元格来组成数据输出,且合并单元格里的每个基本列必须填写数据(空数据也认可),输出的同时会自动拆分那些已经合并的单元格。
另外,Select/Merge等Excel语句尽量少使用,可以合并成成一条的语句表示的,尽量合并。
顺便提醒,这种方式不适合用在已经合并的单元格,如果使用,一定要按照基本单元格来组成数据输出,且合并单元格里的每个基本列必须填写数据(空数据也认可),输出的同时会自动拆分那些已经合并的单元格。