我有如下代码,在在导出数据时出错,请问如何解决,procedure TForm1.Button1Click(Sender: TObject);
var
  m,n: Integer;
  ole: OleVariant;
begin
     ole := CreateOleObject('excel.application');
    ole.workbooks.Add;
    For m := 1 to ads.FieldCount  do
      ole.Cells.Item[1,M]:= ads.Fields[m-1].FieldName;
     m:=2;
    ads.First;
    while Not ads.Eof do
    begin
      For n := 1 to ads.FieldCount do
        ole.Cells.Item[m,n] := ads.Fields[n-1].AsString;
        inc(m);
        ads.Next;
    end;
      ads.First;
    ole.ActiveWorkBook.SaveAs('d:\lxb10.xls');//===此处当第二次保存时,如果选不覆盖已存在的表“lxb10”时出错,如果选择覆盖就是正常的,请问如何解决?
  showmessage('导出成功,已生成表格路径:d:\lxbook.xls');
 ole.Visible := True;{将EXCEL变为可见}
end;

解决方案 »

  1.   

    把这个ole.ActiveWorkBook.SaveAs('d:\lxb10.xls')改成一个自己输入文件名的方式
      

  2.   

    同意思楼上两位,加一个SaveDialog控件来选择路径
    var
      FileName: String;
    begin
      //  ......
      FileName := 'd:\lxb10.xls';
      if FileExisted(FileName) then
      begin
        if SaveDialog.Execute then
          FileName := SaveDialog.FileName
        else
        begin
          ShowMessage('用户放弃了对Excel的保存!');
          FileName := '';
        end;
      end;
      if FileName <> '' then
        ole.ActiveWorkBook.SaveAs('d:\lxb10.xls');//
      

  3.   

    最后一句错了:
        ole.ActiveWorkBook.SaveAs(FileName);// 
      

  4.   

      if FileExisted(FileName) then //以上此名为何出错呢!在USES中就加入什么呀?
      

  5.   

    我覺得關于文件名重名的問題﹐最好是用時間來確定﹐如下﹕
    FileName := FormatDateTime('YYYYMMDDHHNNSS',Now)+'.xls';
      

  6.   

    三楼做的答案很好,可是我总在下面一句出错,谁能帮我解决一下呀?
     if FileExisted(FileName) then //以上此名为何出错呢!在USES中就加入什么呀?
      

  7.   

     FileExists(FileName) 引用此函数.