TDataSet中的数据导出到Excel的速度(0)

  • 主题发起人 主题发起人 szhcracker
  • 开始时间 开始时间
S

szhcracker

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家讨论一下:用哪种方法最快?我参考网上的直接写成Excel 4.0格式文件的方法,测试下来8000条记录(6个字段)大约要33秒左右,说实话,这个速度好像也不是很快,不知各位富翁有何良策?欢迎大家踊跃发言,谢谢!
 
写成XML格式会不会速度提升一点?
 
已解决。to eastweast:你的方法从速度上来说是极快的(我不能肯定是不是最快的,哈哈),用如下方法实现:var cds: TClientDataSet; begin ...; // 加载数据到 cds 中 cds.SaveToFile('C:/temp.xls', dfXMLUTF8); // 注意要用 dfXMLUTF8 格式 ...;end;经粗略测试,导出 8000条记录(6个字段)大约只需 1.5 秒左右,但是这种方法导出的文件虽然可以用Excel直接打开,但是有些“难看”,如要像正常的Excel表那样,就需要用户自己再删除一些行和列,所以此法可行,但我没有采用。我用的方法也很简单:就是直接把数据导出成制表符分隔的文本文件(同上记录大约耗时2.5秒左右),这样Excel也可以直接打开,不过也有缺点,主要是:1、列宽为Excel默认列宽,不够美观;2、用户双击某列自动调整后再关闭时会询问是否保存,此时如要保存,则要注意选择格式;3、最大的问题(仅从理论上进行分析,没有测试过):如果某个字段的内容恰好有制表符、换行或回车,可能导出的文本被Excel打开后就会有问题,所以这种方法有局限性。另外,网上的用剪贴板复制、粘贴的方法也很好,速度也是极快的,不过这种方法要求客户端必须装了Excel才可以。期待各位的高见。
 
接受答案了.
 
请参看SDAC的导出方法 ,那个是最快的了。看后就会有灵感了。将readonly设成readonly, 光标单一等 。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部