| « | January 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| 公告 |
| 暂无公告... |
| 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; |
|
|