剪贴板暂无内容 利用剪贴板实现高速导出数据到Excel
利用剪贴板实现高速导出数据到Excel
在很多的时候 我们需要将我们的数据导出到Excel中进行加工 在Access中有现成的工具可以实现 可是在Delphi中却偏偏没有 无论如何我们需要这么一个工具 那么 事不宜迟 细细一想 最好的方法莫过于直接在程序中按照Excel的格式生成Excel文件 使用Ole技术直接调用Excel实例 由于第一种方法技术实现过于复杂 好在一般的计算机上已经安装了Office 在此就第二种方法 抛一块砖
在此做一个示例以方便说明 我们考虑到导出数据有很多的情况是Master/Detail数据 因此就用两个TQuery和一个TDataSource 如果有更多的层次 只需要增加TQuery和TDataSource即可 以下使用了两个TQuery 分别是 qryMaster和qryDetail 一个TDataSource:dsSource;
步骤是 建立一个Excel实例 创建一个工作表 创建一个TStringList 用来装数据 穷举数据表 将数据存入TStringList 将TStringList的数据复制到剪贴板 把剪贴板中的数据粘贴到Excel
本方法的优点在于 比逐条写入到Excel中的速度大大提高 我曾试过 在P M的机器上用普通的方法 导出 条数据大约需要 分钟 而该用本方法后只需要 秒
function ToExcel():boolean; var y :integer; tsList :TStringList; s :string; aSheet :Variant; begin result:=true; Excel Connect; // 打开Excel Excel Visible[ ]:=true; // 显示Excel Excel Workbooks Add(xlWBAorksheet ); aSheet:=excel Worksheets Item[ ];
tsList:=TStringList Create; try try with qryMaster do begin Open; First; While Not Eof do begin s:= ; for y:= to FieldCount do begin s:=s+Fields[y] AsString+# ; Application ProcessMessages; end; tsList Add(s); // 从表 if qryDetail<>nil then begin with qryDetail do begin Open; First; while Not Eof do begin s:= ; for y:= to FieldCount do begin s:=s+Fields[y] AsString+# ; Application ProcessMessages; end; tsList Add(s); next; end; end; end; next; end; Close; end; Clipboard AsText:=tsList Text; except result:=false; end; finally tsList Free; end;

lishixinzhi/Article/program/Delphi/201311/25012
相关文章
- excel里怎么嵌入表格 如何能将excel表格数据变成word文档,而且数据不会乱
- excel仅粘贴文本 excel 从文本中复制几行数据到excel中,如何让每个字符占据一个单元格
- excel快速录入时间 求一份小企业用的excel记账模板,录入记账凭证后能自动生成科目汇总表、总账、明细账,利润表
- excel要双击才能输入 ppt插入图表 双击图标会就会出现Excel表格 表格做完会自动生成图表同时会显示在ppt里 怎么做
- excel快速删除空白列 怎样把Excel中某一列的空白,全部替换为数字4?
- excel找一列不为空的单元格 excel中如何在一列资料中提出非空字元
- excel打印整个工作簿 当向Excel工作簿档案中插入一张电子工作表时,表标签中的英文单词为___
- Excel表格怎么删除空白行 Excel 请教,如何快速删除不规则空白行
- excel跳空格排序 excel表格一列中跳过过空格自动上移数据
- 快速建立同样工作表 Excel中如何增加内容格式相同的工作表?
爱学记

微信收款码
支付宝收款码