使用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方式都是最快的.
.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 |
相关文章推荐
- 使用Excel“自动化”功能将数据输出到Excel的三种高效方法对比实验
- 轉載:使用“自动化”功能将数据从 ADO 记录集传输到 Excel
- excel内一键进行sql查询(使用方法 1.选择’需要进行sql查询区域 包括字段名 2 输入sql语句 3.选择输出数据的单元格)
- jQuery使用ajax方法解析返回的json数据功能示例
- 导出数据到excel的三种方法
- Python从excel读取数据,并使用scipy进行散点的平滑曲线化方法
- SpringMVC(27):json数据的传递处理的示例(实现功能:使用jQuery框架的ajax()方法实现用户信息查看)
- 使用Curl、socket、file_get_contents三种方法POST提交数据
- 数据类型uint16_t,uint32_t,uint64_t输入输出使用方法
- 导出数据到excel的三种方法 的学习
- 遍历DataTable内存数据的三种方法性能对比
- excel宏调用webservice使用存储过程同步excel数据的方法
- EXCEL:使用VLOOKUP逆向取数据的方法
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
- java输出excel数据的方法示例(一种是到excel,一种是结构化数据到文本文件,可以用editplus之类的看)
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- 单链表的功能使用:初始化,赋值,输出,删除,按值查找,按地址查找,数据修改
- NET使用NPOI组件将数据导出Excel-通用方法 【推荐】
- 使用Curl、socket、file_get_contents三种方法POST提交数据
- Excel—两列数据对比方法