我在程序中调用EXCEL,要实现用户在点击保存的时候是另存新目录(比如可以实设定我的文档什么的),而不是存在我事先画好的模板上?

解决方案 »

  1.   

    procedure Tcpya_app.ToolButton1Click(Sender: TObject);
    var
      ExcelApplication1: TExcelApplication;
      ExcelWorksheet1: TExcelWorksheet;
      ExcelWorkbook1: TExcelWorkbook;
       i, j: integer;
    begin
    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);
         with excelworksheet1 do
                begin
                cells.Item[1,1]:='机型名称:';
                cells.Item[2,1]:='整机号:';
                excelworksheet1.range[excelworksheet1.cells.Item[1, 1],excelworksheet1.cells.Item[2,1]].Font.ColorIndex := 5;
                cells.Item[1,2]:= dblookupcombobox1.text;
                cells.Item[2,2]:= dbedit1.Text;
        for j := 0 to datamodule2.spyf.Fields.Count - 1 do
          begin
            ExcelWorksheet1.Cells.item[3, j + 1] := datamodule2.spyf.Fields[j].DisplayLabel;
            ExcelWorksheet1.Cells.item[3, j + 1].font.size := '10';
          end;
             excelworksheet1.range[excelworksheet1.cells.Item[3, 1],excelworksheet1.cells.Item[3,j+1]].Font.ColorIndex := 5;
        for i := 4 to datamodule2.spyf.RecordCount + 3 do
          begin
            for j := 0 to datamodule2.spyf.Fields.Count - 1 do
              begin
                ExcelWorksheet1.Cells.item[i, j + 1] :=
                    datamodule2.spyf.Fields[j].Asstring;
                ExcelWorksheet1.cells.item[i, j + 1].font.size := '10';
              end;
            datamodule2.spyf.Next;
          end;
        ExcelWorksheet1.Columns.AutoFit;
        ExcelWorksheet1.Cells.item[1, 2] :=dblookupcombobox1.Text;
        ExcelWorksheet1.Cells.Item[1, 2].font.size := '14';
        Excelworksheet1.SaveAs(concat(FRootPath,'机型信息.xls'));    end;//可以写成savedialog1.filename,就可以了
        Application.MessageBox(pchar('数据成功导出'),'hello',mb_ok);
      finally
        ExcelApplication1.Disconnect;
        ExcelApplication1.Quit;
        ExcelApplication1.Free;
        ExcelWorksheet1.Free;
        ExcelWorkbook1.Free;
      end;
    end;
      

  2.   

    IORILI(眼镜@_@) 
    你理解错了我的意思了,我是想用户在EXCEL中点击保存的时候,控制一下保存目录,具体的说应该是在excel中作控制。
      

  3.   

    你可以这样写:  ExcelApplication.FileDialog(msoFileDialogSaveAs).InitialFileName :=    'c:\temp\my*.xls';
      

  4.   

    msoFileDialogSaveAs需要自己定义吗?
    怎么在编译的时候,认不出来呢?