DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 10
在线用户: 12
导航: 论坛 -> 论坛精华贴 斑竹:liumazi,iamdream  
作者:
女 yqf_jtl (小白) ★☆☆☆☆ -
普通会员
2004/11/23 8:18:55
标题:
请问各位高手,在delphi中怎样把dbgrid中的数据保存到excel中? 浏览:4832
加入我的收藏
楼主: 请帮帮这位刚出道的菜鸟?谢谢!
----------------------------------------------
-
作者:
男 smt44 (smt44) ★☆☆☆☆ -
盒子活跃会员
2004/11/23 9:02:19
1楼: 主要要用到的是VBA
操作Excel的相关函数可以在Excel的帮助文件VBA中找到,
----------------------------------------------
战斗到底,直到胜利!!!
作者:
女 yqf_jtl (小白) ★☆☆☆☆ -
普通会员
2004/11/23 9:51:32
2楼: 谢谢!
----------------------------------------------
-
作者:
男 xiaojun5460 (西门吹灯) ★☆☆☆☆ -
盒子活跃会员
2004/11/23 9:58:08
3楼: 本站的精华区有你要的东东.
----------------------------------------------
-相互学习,共同进步!
作者:
男 coypu (coypu) ★☆☆☆☆ -
盒子活跃会员
2004/11/23 10:12:06
4楼: 我有例程和源代码,你要的话就自己看吧
此帖子包含附件:coypu_20041123102826.zip 大小:216.3K
----------------------------------------------
-
作者:
男 onionzq (kylin) ★☆☆☆☆ -
盒子活跃会员
2004/12/24 17:00:00
5楼: 注意:前面要加上USES ComOBJ

( 你也直接在按钮或者ActionList事件中引用它 )
procedure TfrmMate.ToExcel(DBGrid:TDBGrid);
Const
  Con_stStr='''';
var
  ExcelApp: Variant;
  i,j,k:integer;
  FileName:string;
  DlgSave:TsaveDialog;
Begin
  DlgSave:=TsaveDialog.Create(nil);
  DlgSave.Filter:='*.xls|*.xls';
  if DlgSave.Execute then
  Begin
    application.ProcessMessages;
    Filename:=DlgSave.FileName;
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.Caption :='能创监控系统日志数据';//'Microsoft Excel';
    ExcelApp.WorkBooks.Add;
    application.ProcessMessages;
    ExcelApp.WorkSheets[1].Activate;
    K:=1;
    For i:=0 To DBGrid.Columns.Count-1 Do
    Begin
      if DBGrid.Columns[i].Visible Then
      Begin
        ExcelApp.Cells[1,K]:=DBGrid.Columns[i].Title.Caption;
        k:=k+1;
      End;{if}
    End;{for}
    ExcelApp.rows[1].font.name:='宋体';
    ExcelApp.rows[1].font.size:=10;
    ExcelApp.rows[1].Font.Color:=clBlack;
    ExcelApp.rows[1].Font.Bold:=true;
    j:=1;
    For i:=0 To DBGrid.Columns.Count-1 Do
    Begin
      If DBGrid.Columns[i].Visible Then
      Begin
        qry_Mate.First;
        for k:=1 To qry_Mate.RecordCount-1 Do
        Begin
          ExcelApp.Cells[K+1,j]:=ConstStr+qry_Mate.FieldByName(DBGrid.Columns[i].FieldName).Asstring;
          qry_Mate.Next;
        End;{for}
      j:=j+1;
    End;{if}
    End;{for}
    For I:=1 To qry_Mate.recordcount Do
    ExcelApp.rows[i].Font.SIZE:=9;
    ExcelApp.Columns.AutoFit;
    ExcelApp.ActiveWorkBook.SaveAs(FileName);
    ExcelApp.WorkBooks.Close;
    Application.MessageBox('数据导出成功....','数据导出',0);
    ExcelApp.Quit;
    ExcelApp:=Unassigned;
    DlgSave.Destroy;
  End;
end;
----------------------------------------------
-
作者:
男 onionzq (kylin) ★☆☆☆☆ -
盒子活跃会员
2004/12/24 17:03:39
6楼: 请问大家导入数据问题:
 (我总是用insert 插入数据,使用起来很不方便;要打开要导入的excel文件  )

 希望有知道或者可以解决此问题的发个代码或函数给我,谢谢 !

   
yangchongzq@163.net
----------------------------------------------
-
作者:
男 xzfemail (刀狐) ★☆☆☆☆ -
盒子活跃会员
2004/12/26 9:38:48
7楼: procedure Tform5.ToExcel(DBGrid:TDBGrid);
Const
  Con__stStr='''';
var
  ExcelApp: Variant;
  i,j,k:integer;
  FileName:string;
  DlgSave:TsaveDialog;
Begin
  DlgSave:=TsaveDialog.Create(nil);
  DlgSave.Filter:='*.xls|*.xls';
  if DlgSave.Execute then
  Begin
    application.ProcessMessages;
    Filename:=DlgSave.FileName;
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.Caption :='能创监控系统日志数据';//'Microsoft Excel';
    ExcelApp.WorkBooks.Add;
    application.ProcessMessages;
    ExcelApp.WorkSheets[1].Activate;
    K:=1;
    For i:=0 To DBGrid.Columns.Count-1 Do
    Begin
      if DBGrid.Columns[i].Visible Then
      Begin
        ExcelApp.Cells[1,K]:=DBGrid.Columns[i].Title.Caption;
        k:=k+1;
      End;{if}
    End;{for}
    ExcelApp.rows[1].font.name:='宋体';
    ExcelApp.rows[1].font.size:=10;
    ExcelApp.rows[1].Font.Color:=clBlack;
    ExcelApp.rows[1].Font.Bold:=true;
    j:=1;
    For i:=0 To DBGrid.Columns.Count-1 Do
    Begin
      If DBGrid.Columns[i].Visible Then
      Begin
        qry_Mate.First;
        for k:=1 To qry_Mate.RecordCount-1 Do
        Begin
          ExcelApp.Cells[K+1,j]:=ConstStr+qry_Mate.FieldByName(DBGrid.Columns[i].FieldName).Asstring;
          qry_Mate.Next;
        End;{for}
      j:=j+1;
    End;{if}
    End;{for}
    For I:=1 To qry_Mate.recordcount Do
    ExcelApp.rows[i].Font.SIZE:=9;
    ExcelApp.Columns.AutoFit;
    ExcelApp.ActiveWorkBook.SaveAs(FileName);
    ExcelApp.WorkBooks.Close;
    Application.MessageBox('数据导出成功....','数据导出',0);
    ExcelApp.Quit;
    ExcelApp:=Unassigned;
    DlgSave.Destroy;
  End;
end;

这么也通不了请你给说详细点
----------------------------------------------
作者:
男 xzfemail (刀狐) ★☆☆☆☆ -
盒子活跃会员
2004/12/27 9:37:17
8楼: ConstStr

我的程序提示ConstStr有错
----------------------------------------------
作者:
男 onionzq (kylin) ★☆☆☆☆ -
盒子活跃会员
2004/12/27 20:05:23
9楼: 对于这个问题,不是ConstStr的错,应该是其他地方的错,
这里的ConstStr,
只是在导出数据时,避免“001”,在Excel中显示成“1”的,耐心仔细检查一下;
----------------------------------------------
-
作者:
男 wishesyou (白衣) ★☆☆☆☆ -
普通会员
2005/1/13 16:09:52
10楼: 这贴给我太多帮助了谢谢。
前面关于conststr的问题我留意了一下,原贴定义变量的时候加了下划线,而在使用的时候没有。前后一致就行了。
----------------------------------------------
-一个篱笆三个桩,一个好汉三个帮,为了大家过得更美好,这世界需要热心肠。
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/8/1 22:40:53
12楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS