使用Excel“自动化”功能将数据输出到Excel的三种高效方法对比实验
使用“自动化”功能将数据从 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方式 |
3094 | 2109 | 1062 |
3250 | 2407 | 1703 |
3687 | 2719 | 2063 |
6750 | 5343 | 3391 |
468 | 500 | 453 |
516 | 500 | 469 |
1688 | 1500 | 984 |
610 | 718 | 547 |
625 | 594 | 547 |
656 | 594 | 516 |
1765 | 1453 | 938 |
2578 | 2422 | 1594 |
546 | 532 | 468 |
657 | 578 | 547 |
4453 | 4140 | 2641 |
797 | 750 | 578 |
4453 | 4766 | 3109 |
![](http://pic.cnblogs.com/avatar/3632/20170709231802.png)
posted on 2005-03-17 18:04 知道得越多知道的越少 阅读(2631) 评论(2) 编辑 收藏 举报