Delphi7 导出Dbgrid数据到Excel 默认路径设置为我的文档

Delphi7 导出Dbgrid数据到Excel 默认路径设置为我的文档,第1张

概述下面代码是自己写的,今天有个同学打电话问我 在Delphi7 导出Dbgrid数据到Excel 正好我最近写过  也许会有更多的网友也会遇到类似的问题,把代码发下, 大家可以参考,有什么不足及需要改进的地方,请指教。 让我们共同学习。 procedure TFPeopleMgr.N6Click(Sender: TObject); var j:   integer; filename:   stri

下面代码是自己写的,今天有个同学打电话问我
在Delphi7 导出DbgrID数据到Excel 正好我最近写过 
也许会有更多的网友也会遇到类似的问题,把代码发下,
大家可以参考,有什么不足及需要改进的地方,请指教。

让我们共同学习。

procedure TFPeopleMgr.N6Click(Sender: TObject);
var
j:   integer;
filename:   string;
MSExcel,xlsheet,xlBook :   Variant;      //ole   ComObj
reg:Tregistry;
MYdocumentPath:   string; 
begin
IF DBGrID1.FIElds[0].Asstring='' then
begin
    Application.MessageBox('列表为空,无法导出!','错误 *** 作',MB_OK+MB_ICONError);
    exit;
end;
//获得“我的文档”的路径
reg:=Tregistry.create;
reg.rootkey:=HKey_Current_User;
reg.openkey('Software\Microsoft\windows\CurrentVersion\Explorer\Shell Folders',false);
MYdocumentPath:=reg.READString('Personal');//“我的文档”的路径
SaveDialog1.InitialDir:=MYdocumentPath;
reg.closekey;
reg.free;
//导出数据
if TreeVIEw_Dep.Selected=nil then
begin
    SaveDialog1.filename:='人员信息 '+datetostr(Now);
end
else
    SaveDialog1.filename:=TreeVIEw_Dep.Selected.Text+'人员信息 '+datetostr(Now);

if SaveDialog1.Execute then
begin
    filename := concat(SaveDialog1.filename,'.xls');
    try
       MSExcel:=CreateolEObject('Excel.Application');
       xlBook:=MSExcel.WorkBooks.Add;
       xlsheet:=xlBook.Worksheets['sheet1'];
       xlsheet.Cells.item[1,1]:='编号';
       xlsheet.Cells.item[1,2]:='姓名';
       xlsheet.Cells.item[1,3]:='考勤号';
       xlsheet.Cells.item[1,4]:='单位';
       xlsheet.Cells.item[1,5]:='职务';
       j:=1;
       qe_ren.First;
       while   not   qe_ren.Eof   do   begin
         DBGrID1.SelectedRows.CurrentRowSelected   :=   True;
         xlsheet.Cells.item[j+1,1]:=DBGrID1.FIElds[0].Asstring;
         xlsheet.Cells.item[j+1,2]:=DBGrID1.FIElds[1].Asstring;
         xlsheet.Cells.item[j+1,3]:=DBGrID1.FIElds[2].Asstring;
         xlsheet.Cells.item[j+1,4]:=DBGrID1.FIElds[3].Asstring;
         xlsheet.Cells.item[j+1,5]:=DBGrID1.FIElds[4].Asstring;
         qe_ren.Next;
         j:=J+1;
       end;//while
       xlBook.SaveAs(filename);
       MSExcel.WorkBooks.close;
       MSExcel.Quit;
       MSExcel:=unassigned;
    except
      Application.MessageBox('Excel没有安装!','错误提示',MB_ICONERROR+mb_Ok);
      exit;
    end;//try
end;// end if SaveDialog1.Execute then

end;

转载请注明出处。


在使用控件dbgrIDeh导出excel后,excel2010提示文件已损坏,想通过程序判断excel的版本,如果是2010版就通过ole导出,(通过注册表或者文件目录等其他方法都可以),望高手指点!! 更多0 分享到: 相关主题推荐:  excel  注册表  控件  2010 相关帖子推荐: VS2102MFC控件,如何授权。数字签名向导出不来 excel怎样按某列的值分组统计其平均值 如何编程获取windows里软件的安装路径? 关于打印时隐藏控件的问题 C# excel导入数据 控件随对话框变化,但是有个问题,当对话框最小化时,作为被除数的m_rect.Width()函数值就是0,请教大神怎么改啊? asp.net 导出Excel MFC 嵌入 Windows Media Player 控件
对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理 回复次数:3

xiaojun5556 xiaojun5556 等级:

#1 得分:40 回复于: 2012-12-18 14:00:32 function hasExcel2010(): Boolean;
var
  MyReg: TRegistry;
begin
// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\SOFTWARE\Microsoft\Office\14.0
  Result := False;
  MyReg := TRegistry.Create;
  try
    MyReg.RootKey := HKEY_LOCAL_MACHINE;
    if MyReg.OpenKey('\SOFTWARE\', FALSE) then
    begin
       if MyReg.OpenKey('\SOFTWARE\Microsoft\Office\Software\Microsoft\Office\14.0', FALSE) then
       begin
         Result := True;
       end
       else if MyReg.OpenKey('\SOFTWARE\Microsoft\Office\14.0\Excel\installroot', FALSE) then
       begin
         Result := MyReg.ValueExists('Path');
       end
       else if MyReg.OpenKey('\SOFTWARE\Microsoft\Office\14.0', FALSE) then
       begin
         Result := True;
       end;
       MyReg.CloseKey;
    end;
  finally
    MyReg.Free;
  end;
end;

function hasExcel2007(): Boolean;
var
  MyReg: TRegistry;
begin
// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Excel\installroot\Path: C:\Program files\...
  Result := False;
  MyReg := TRegistry.Create;
  try
    MyReg.RootKey := HKEY_LOCAL_MACHINE;
    if MyReg.OpenKey('\SOFTWARE\', FALSE) then
    begin
       if MyReg.OpenKey('\SOFTWARE\Microsoft\Office\12.0\Excel\installroot', FALSE) then
       begin
         Result := MyReg.ValueExists('Path');
       end;
       MyReg.CloseKey;
    end;
  finally
    MyReg.Free;
  end;
end;
2014年1月微软MVP当选名单揭晓! 对我有用[0]  引用 |  举报 |  管理

szto2003 szto2003 等级:

#2 得分:0 回复于: 2012-12-18 18:44:34 能用HKEY_CURRENT_USER下面的判断吗,因为好多公司的电脑没有HKEY_LOCAL_MACHINE的访问权限!!
总结

以上是内存溢出为你收集整理的Delphi7 导出Dbgrid数据到Excel 默认路径设置为我的文档全部内容,希望文章能够帮你解决Delphi7 导出Dbgrid数据到Excel 默认路径设置为我的文档所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1275889.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存