您的位置:首页 > 其它

使用Excel“自动化”功能将数据输出到Excel的三种高效方法对比实验

2005-03-17 18:04 423 查看
使用“自动化”功能将数据从 ADO 记录集传输到 Excel
.NET C#版本:http://support.microsoft.com/kb/306023
.NET VB版本:http://support.microsoft.com/kb/306022
VB6版本:http://support.microsoft.com/kb/247412
以下是VB6下的测试数据,没做之前,估计ado方式最快,因为微软KB里也说CopyFromRecordset 是提高效率和性能的首选方法
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;246335
做了后,发现array方式最快,可能是实验方式不同,微软那个结果是基于从一个数据库直接用ADO读数据源而得出的.
我的实验是,基于文本文件读数据,然后临时生成ADO内存记录集,转换数组,写临时TXT文件这三种方式实验的.

其中遇到不少问题:
1.ADO方式适用于Office2000及以上版本,Office 97不支持ADO,需要用DAO方式
' 字段中的值的长度不能超过911,否则会报-2147467259错
' 微软文章上所说是不能包括任一字段,http://support.microsoft.com/default.aspx?scid=kb;zh-cn;246335
' 英文是说either type in a recordset,http://support.microsoft.com/default.aspx?scid=kb;en-us;246335
2.txt方式
' 速度相对于数组略差一点,但目前来说是最佳方式,因为没有像ADO和Array两种那样都有长度不超过911限制
3.array方式
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;246335
'1.数组不能包含超过 255 个字符的元素
'2.数组不能包含空值
'3.数组中的元素个数不能超过; 5461个
'经测试,在Office2003中1-3的限制有所变化,3和2无限制了,1的限制扩大到911

ADO记录集的字段和Array数组中元素的值长度不能超过911,这个值是不是为了让人记忆深刻呢?
以下实验以打开16个从几百KB到4M不等的文本文件为数据源
三种方式反复优化过实现代码,性能不断得到提升,但不管怎样array方式都是最快的.

ado方式txt方式array方式
309421091062
325024071703
368727192063
675053433391
468500453
516500469
16881500984
610718547
625594547
656594516
17651453938
257824221594
546532468
657578547
445341402641
797750578
445347663109
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐