本站首页    管理页面    写新日志    退出


«January 2026»
123
45678910
11121314151617
18192021222324
25262728293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:DeathCat的猫窝
日志总数:17
评论数量:89
留言数量:0
访问次数:218899
建立时间:2005年4月5日




[Delphi食堂]懒人函数 之 “存储Grid中的数据到Excel”
软件技术

DeathCat 发表于 2005/4/6 11:14:54

这段代码真是懒到极点了!! 声明:这段代码是我把其它人的代码改出来的,但是出自谁的手我就忘记啦~~大家用吧~~~向原作者致以崇高的敬意!!! 我直接写到了Button的Click下面,懒得做函数了,要用的人拿去自己改改吧,不着急的人就等我有时间改吧~~ procedure TMain.Button3Click(Sender: TObject);      //另存为Excelvar  ModuleName:string;                             //Excel 模板文件名 *.Xlt  FileName: String ;                             //文件名  Col,Row : Integer;                             //行列数  ExlApp : Variant;                              //定义变量,用于创建excel模板  i, j : Integer ;                               //整型变量,用于循环  nocan : boolean;Begin  if IsSending then exit;  DBGrid1.Enabled := false; if  ADOQuery1.Active then                       //query2是当前活动的数据源  begin   nocan:= savedialog1.Execute; //nocan是全局变量 记录保存对话返回结果 保持 T 取消 F    if (saveDialog1.FileName <> '') and nocan then     begin       FileName:=saveDialog1.FileName;     // 判断指定的模板文件是否存在     row:=1;     col:=1;     ModuleName := extractfilepath(Application.ExeName)+'Model\OFFICE数据模版.xls';     If FileExists(ModuleName)= False Then      //没有excel模板文件       begin         ShowMessage( 'EXCEL文件: '+ ModuleName + ' 不存在!  请重新安装程序!' ) ;         Exit ;       end ;     EXLApp := CreateOleObject('Excel.Application');     // 从指定的模板文件*.xlt 新建一 Excel 文档     ExlApp.WorkBooks.Open(ModuleName);          //打开模板     ExlAPP.WorkSheets[1].Activate;      // 把 TDBGrid 的数据导入 Excel 中     ADOQuery1.First;     i := Row ;     //sb1.SimpleText :='       信息:   正在把查询结果写入到EXCEL文件中,需要时间 请勿中断! 请稍侯...... ';     application.ProcessMessages;                   //读取系统信息,释放cpu时间片     self.ProgressBar1.Min := 0;     self.ProgressBar1.Max := DBGrid1.DataSource.DataSet.RecordCount;     self.ProgressBar1.Position := 0;     self.ProgressBar1.Visible := true;     self.LBState.Caption := '保存数据到Excel';     self.LBState.Visible := true;      While Not(DBGrid1.DataSource.DataSet.Eof)  Do //写入excel表       Begin             For j:=Col  To DBGrid1.FieldCount+ Col-1  Do                 ExlApp.Cells[i+1,j].Value := DBGrid1.Fields[j-col].AsString ;  //i+1保留模板列标题             DBGrid1.DataSource.DataSet.Next ;             Application.ProcessMessages;             i := i+1 ;       End ;      self.LBState.Caption := '';      self.ProgressBar1.Position := 0;      self.ProgressBar1.Visible := false;      // 保存到 指定的文件     FileName := Trim(FileName) ;     IF FileExists(FileName) Then     DeleteFile(FileName) ;    try                                //保存意外处理     ExlAPP.ActiveWorkBook.SaveAs(FileName);     // 关闭 Excel     ExlApp.WorkBooks.Close;     //showmessage('数据导出完毕!' + chr(13) + chr(10) + '保存在您的 '+FileName+'.xls  文件中,请查看! ');     Application.MessageBox('数据保存完毕','轴承网商发布系统4.0提示',0);    except   //取消覆盖处理     ExlApp.WorkBooks.Close;     Application.MessageBox('数据保存失败!','网商发布系统4.0提示',0);    end;     ExlApp.Quit;     ExlApp:=Unassigned;   End;   end;   DBGrid1.Enabled := true;end;


阅读全文(2357) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.410 second(s), page refreshed 144801273 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号