提高数据导出至Excel效率问题(等,立即给分)?

hbqc_zh 2006-09-26 02:58:27
描述:
1、我开发的一个查询系统中,用到DBGridEh1控件在显示查询数据,
2、使用TADOQuery,DataSource查询出数据源,
如下语句进行实现:
if (RunSql(DM->ADOQuerySQL,Txtsql)) //RunSql执行数据库查询的一个方法,Txtsql是SQL语句
{
if (DM->ADOQuerySQL->RecordCount <= 0)
{
Application->MessageBoxA("未查询到任何记录!","提示",MB_OK|MB_ICONINFORMATION);
return;
}
DataSource1->DataSet = DM->ADOQuerySQL;
FrmInAndOutRecord->DBGridEh1->DataSource = NULL;
FrmInAndOutRecord->DBGridEh1->DataSource = DataSource1;
}
问题:
1、将DBGridEh1内数据导出至Excel,DBGridEh1内的数据量比较大,一般会有几万条,目前所做的导出方法是将DBGridEh1每行数据逐行导出,效率相当低,请问各位同仁,有谁有更好更快的方法来解决效率问题?
...全文
266 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
手指风 2006-09-27
  • 打赏
  • 举报
回复
好象是用文件流的
手指风 2006-09-27
  • 打赏
  • 举报
回复
cxDBGrid的导出效率也还可以,45k条数据14个字段导出时间差不多在1分钟之内
solokey 2006-09-27
  • 打赏
  • 举报
回复
看我的blog...应该比剪贴板快吧.
Ayx_hys 2006-09-27
  • 打赏
  • 举报
回复
用SQL语句比较快
BenLeak 2006-09-27
  • 打赏
  • 举报
回复
文件流的方式:写为 html 文件(写时当作二进制文件写,需要使用 html 文件模板)
使用 Excel 打开 html 文件另存为 Excel 文件即可
hbqc_zh 2006-09-27
  • 打赏
  • 举报
回复
//DBGridEh1 导出Excel
#include <DBGridEhImpExp.hpp>
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SaveDBGridEhToExportFile(__classid(TDBGridEhExportAsXLS),DBGridEh1,"e:\\temp\\t.xls",true);
}
onemetre 2006-09-26
  • 打赏
  • 举报
回复
因为最近没有做delphi
ClipBoard具体流程:
将数据转到StringGrid中,
将StringGrid的部分copyto ClipBoard 中
然后 Pasteto Excel的指定Range


文件流以流的形式写入数据集的

自己可以先查查相关代码看看

踢踏 2006-09-26
  • 打赏
  • 举报
回复
DBGridEh1 本身有导出Excel的功能
hbqc_zh 2006-09-26
  • 打赏
  • 举报
回复
楼上的兄弟,贴点代码出来啊!
onemetre 2006-09-26
  • 打赏
  • 举报
回复
可以利用Excel的CopyFromRecordset Recordset 快速导出数据

还有利用ClipBoard也可以快速导出数据

最近看了一个利用文件流的也可以

不过还是剪贴板最快
wudi_1982 2006-09-26
  • 打赏
  • 举报
回复
如果数据库支持,那就用数据库支持的一些工具来完成导出

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧