注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

【转载】两个比较好用的DELPHI操作EXCEL的代码  

2014-05-02 15:54:37|  分类: delphi xe5 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        昨天在源码中国下了一个小程序,是关于DELPHI操作EXCEL的,其中一个是关于得到EXCEL中某个单元格内容的,那个例子得到一个单元格值的代码是这样的。
excelapp.activeworkbook.sheets[edit1.Text].select;
excelapp.activeworkbook.sheets[edit1.Text].range[edit2.Text].select;
edit3.Text :=excelapp.ActiveCell.value;
这样好象没有错,可是如果不是单纯到得到一个工作薄某个固定工作表的固定单元格内容,而是一个目录下的所有的工作薄某个工作表的固定单元格内容,如果不断地打开工作薄,不单打开速度很慢,而且很浪费资源,更好的做法是可以利用ExecuteExcel4Macro宏完成工作。
具体代码如下:
var ExcelApp:OleVariant ;
    Str:VARIANT;
begin
    ExcelApp:=CreateOLEObject('Excel.application');
    ExcelApp.visible:=false;
    Str:=ExcelApp.ExecuteExcel4Macro(''''+ExtractFilePath(Application.ExeName )+'['+'Output.xls'+']'+ 'SheetAuthors''!R1C1');
    showMessage(Str);
    ExcelApp.quit;
    ExcelApp:=unassigned;
end;
只要写成一个函数,再调用,就会非常便利。
另外,很多的EXCEL例子,从一个数据集导出至EXCEL时,总是运用CREATEOLEOBJECT方法,创建一个OLE对象,然后遍历所有的记录,循环写到EXCEL的单元格去,这个方法太笨了,速度很慢,而且一旦用户鼠标有所动作,可能导出一半就中断了。
下面这段代码可以很快的导出数据至EXCEL,速度很快,代码也很简单。
var AdoQY:TAdoQuery;
    sSql:String;
begin
   AdoQY:=TAdoQuery.Create(nil);
   AdoQY.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'Test.mdb;Persist Security Info=False;Jet OLEDB:Database';
   sSql := 'SELECT * INTO ["Excel 8.0;Database=' + Extractfilepath(application.ExeName )+'output.xls' + '"].[TestSheet] FROM t';
   AdoQY.SQL.Text:=sSql;
   AdoQY.ExecSQL;
end;
就是把EXCEL文件当然一个数据库,不需要创建OLE对象,不需要打开工作薄,方便、快捷!!!
这个是复制整个表的,如果是追回的,请看下面的说明:
If you need to add (append) data to an existing workbook (and an existing worksheet), you can use the "Insert Into ... In" SQL statement. When transferring data to an existing sheet, the column headings must already be present.
  评论这张
 
阅读(91)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017