uses ComObj;

//DBGrid:指定的DBGrid;SaveFileName:要保存的文件名

function ExportDBGrid(DBGrid: TDBGrid; SaveFileName: string): boolean; var

c,r,i,j: integer;

app: Olevariant;

TempFileName, ResultFileName: string;

begin

try

result := True;

app := CreateOLEObject('Excel.application');

//app.WorkBooks.Add(xlWBatWorkSheet);

except

Application.MessageBox('Excel没有正确安装!',' 警告',MB_OK);

result := False;

exit;

end;

SaveDialog1.DefaultExt := 'xls';

SaveDialog1.FileName:=SaveFileName;

if SaveDialog1.Execute then

TempFileName := SaveDialog1.FileName

else

Exit;

app.Workbooks.add;

app.Visible := false;

Screen.Cursor := crHourGlass;

DBGrid1.DataSource.DataSet.First;

c:=DBGrid1.DataSource.DataSet.FieldCount;

r:=DBGrid1.DataSource.DataSet.RecordCount;

Application.ProcessMessages;

for i:=0 to c-1 do

begin

app.ActiveSheet.Columns[i+1].ColumnWidth:=15;//设置格宽度

app.cells(1,1+i):=DBGrid1.DataSource.DataSet.Fields[i].DisplayLabel;

end;

for j := 1 to r do

begin

for i := 0 to c - 1 do

begin

app.cells[j+1,1].numberformatlocal:='@';//设置成文本

app.cells(j+1,1+i):=DBGrid1.DataSource.DataSet.Fields[i].AsString; end;

DBGrid.DataSource.DataSet.Next;

end;

ResultFileName := TempFileName;

if ResultFileName = '' then

ResultFileName := '数据导出';

if FileExists(TempFileName) then

DeleteFile(TempFileName);

app.Activeworkbook.saveas(TempFileName);

app.Activeworkbook.close(false);

app.quit;

app := unassigned;

end;

Delphi+DBGrid导出Excel的更多相关文章

  1. Delphi DBGridEh导出Excel

    unit Unit_DBGridEhToExcel; interface uses SysUtils, Variants, Classes, Graphics, Controls, Forms, Ex ...

  2. Delphi TXLSReadWriteII导出Excel

    TXLSReadWriteII导出Excle (有点复杂,可以自己简化一下,直接从项目中抓取的) procedure TformSubReport.DataToExcel(_Item: Integer ...

  3. delphi cxgrid导出excel去除货币符号

    版本 : devexpress 13.1.4 打开 包在ExpressExportLibary目录中.  修改FCells.SetCellDataCurrency为FCells.SetCellData ...

  4. Delphi TXLSReadWriteII 导出EXCEL

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. Delphi 数据导出到Excel

    好多办公软件特别是财务软件,都需要配备把数据导出到Excel,下面就来介绍两种数据导出方法 1.ADODB导出查询结果(此方法需要安装Excel) 2.二维表数据导出(根据Excel文件结构生成二进制 ...

  6. CxGrid导出Excel时清除颜色的设置

    CxGrid导出Excel时清除颜色的设置 (2011-04-25 16:33:23) 转载▼ 标签: it 分类: Delphi http://www.radxe.com/?p=170 cxgrid ...

  7. C#使用Aspose.Cells导出Excel简单实现

    首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...

  8. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  9. [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...

随机推荐

  1. 理解Path对路径进行操作的API

    阅读目录 一:理解normalize方法 二:理解join方法 三:理解dirname方法 四:理解basename方法 五:理解extname方法 回到顶部 一:理解normalize方法 该方法将 ...

  2. 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)

    阅读目录 一:vue-router是什么? 二:vue-router的实现原理 三:vue-router使用及代码配置 四:理解vue设置路由导航的两种方法. 五:理解动态路由和命名视图 六:理解嵌套 ...

  3. PAT A1118 Birds in Forest (25 分)——并查集

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  4. MySQL(二)数据的检索和过滤

    使用频率最高的SQL语句应该就是select语句了,它的用途就是从一个或多个表中检索信息,使用select检索表数据必须给出至少两条信息:想选择什么,以及从什么地方选择 一.检索数据 1.检索单个列 ...

  5. Quartz的JobDetail没有触发器指向时会被删除的问题

    之前项目里使用的是老版本的Quartz,才1.6.5.发现一个问题,如果我触发器配置的时间已经过了,想去手动触发一个任务,就会报找不到这个任务的异常,通过debug可以发现,Scheduler里添加j ...

  6. 9、链表 & 状态机 & 多线程

    链表的引入 从数组的缺陷说起 数组有2个缺陷:一个是数组中所有元素的类型必须一致:第二个是数组的元素个数必须事先制定并且一旦指定之后不能更改. 如何解决数组的2个缺陷:数组的第一个缺陷靠结构体去解决. ...

  7. php中按值传递和按引用传递的一个问题

    php中传递变量默认是按照值传递. 简单举个例子: <?php function testArray($arr){// &$arr $arr = array(1,2,3,); } $ar ...

  8. php和js字符串的acsii码函数

    简单普及下编码知识: javascript中有charCodeAt(),根据字符查找ascii码. String.fromCharCode(),根据ascii码查找对应的字符. console.log ...

  9. Redis缓存的使用

    首先需要去Redis官网下载Redis的安装包 要在eclipse中使用Redis还需要两个jar包,需要的自行查找或者联系我 运行Redis需要开启Redis的服务端,也就是下载的安装包中的“red ...

  10. wpf项目打开多个窗体在任务栏只有一个任务

    原文:wpf项目打开多个窗体在任务栏只有一个任务 如果在wpf里,在一个父窗体上打开子窗体,只在任务栏显示一个任务,不是qq聊天窗口俩人聊天人显示俩给那样,只能显示 一个 private void B ...