前几天在坛子里找到了数据导出到excel的帖子,,能够实现,,但是保存的时候是默认的
路径是“我的文档”中,我用savedialog控件试了一下,总实现不了自由的改变保存路径,大家帮忙~~
谁帮忙改好了,我给100分。。不够另外给~~
这是没有用savedialog的代码procedure tform1.WriteExcel(AdsData:Tadoquery; sName, Title: string);
var
  ExcelApplication1: TExcelApplication;
  ExcelWorksheet1: TExcelWorksheet;
  ExcelWorkbook1: TExcelWorkbook;
  i, j: integer;
  filename: string;
begin
  filename := concat(sName, '.xls');
  try
    ExcelApplication1 := TExcelApplication.Create(Application);
    ExcelWorksheet1 := TExcelWorksheet.Create(Application);
    ExcelWorkbook1 := TExcelWorkbook.Create(Application);
    ExcelApplication1.Connect;
  except
    Application.Messagebox('Excel没有安装!','Hello',MB_ICONERROR + mb_Ok);
    Abort;
   end;
   try
     ExcelApplication1.Workbooks.Add(EmptyParam, 0);
     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
     ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
     AdsData.First;
    for j := 0 to AdsData.Fields.Count - 1 do
    begin
      ExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;
      ExcelWorksheet1.Cells.item[3, j + 1].font.size :='10';
    end;
    for i := 4 to AdsData.RecordCount + 3 do
    begin
      for j := 0 to AdsData.Fields.Count - 1 do
      begin
        ExcelWorksheet1.Cells.item[i, j + 1] :=
        AdsData.Fields[j].Asstring;
        ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';
      end;
      AdsData.Next;
  end;
  ExcelWorksheet1.Columns.AutoFit;
  ExcelWorksheet1.Cells.item[1, 2] := Title;
  ExcelWorksheet1.Cells.Item[1, 2].font.size :='14';
  ExcelWorksheet1.SaveAs(filename);
  Application.Messagebox(pchar('数据成功导出'+ filename),'xxxxxitong',mb_Ok);
  finally
    ExcelApplication1.Disconnect;
    ExcelApplication1.Quit;
    ExcelApplication1.Free;
    ExcelWorksheet1.Free;
    ExcelWorkbook1.Free;  end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin   WriteExcel(adoquery1,'biaoming','题目!!!');
end;

解决方案 »

  1.   

    用ExpressSpreadSheet
    www.51delphi.com
    自己下
    很好用
      

  2.   

    WriteExcel(adoquery,'D:\笨蛋','题目!!!')
    到D:\下去看看?
      

  3.   

    而且如果没有d;盘怎么办??我说的是要实现和savedialog似的功能,
    你的回答也太随意了WriteExcel(adoquery,'这里是存放文件名的地方我知道','题目!!!')到“我的文档/这里是存放文件名的地方我知道.xls“下去看看?
      

  4.   

    假如Kingron的方法能保存到D盘的话,那你把savedialog的FileName传进来不就行了
      

  5.   

    难道说你不会用SaveDialog控件?呃,那就有点麻烦了
      

  6.   

    procedure TForm1.bbtnExportClick(Sender: TObject);
    begin
        with TSaveDialog.Create(nil)do
        begin
            Filter:='EXCEL文件(*.xls)|*.xls';
            Title:='文件保存到...';
            InitialDir:='d:\test';
            if Execute then
            begin
                if pos('.XLS',UpperCase(FileName))=0 then
                    edtFilePath.Text:=FileName+'.xls'
                else
                    edtFilePath.Text:=FileName;
            end;
            if FileExists(trim(edtFilePath.Text)) then
            begin
                if Application.MessageBox('该文件已经存在,是否覆盖?','确认',MB_ICONQUESTION+MB_YESNO)=IDYES then
                        DeleteFile(FileName)
                else
                begin
                    bbtnExport.Enabled := True;
                    edtFilePath.Clear;
                    exit;
                end;
            end;
            Free;
        end;
    end;
    WriteExcel(adoquery1,edtFilePath.Text,'题目!!!');
    在界面上加入一个文本框