我做一个导出Excel过程,但现在有个问题,当导出完成后他提示保存总是保存成Excel文件,我现在想保存为dat文件类型和我指定的文件名改如何修改我的代码呢?一下我我导出excel的过程代码,麻烦各位大哥帮忙看看,我现在想要的效果是在导出完成以后提示保存的默认文件名为'2011.dat'文件,小弟在线等待,万分感谢
procedure TForm4.exportexcel(exportset: TClientDataSet);
var
  MyExcel, varCells : Variant;
  MyCells, Cell1, Cell2, Range: OleVariant;
  iRow, iCol        : integer;
begin  try
    Screen.Cursor := crHourGlass;       ///////鼠标    MyExcel := CreateOleObject('Excel.Application');
    MyExcel.WorkBooks.Add;
    MyExcel.Visible := False;
    MyCells := MyExcel.WorkBooks[1].WorkSheets[1].Cells;
    exportset.First;
    iRow := 1;    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 1] := '装备类型';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 2] := '设备名称';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 3] := '装备型号';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 4] := '限制单价';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 5] := '计量单位';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 6] := '购买数量';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 7] := '计划购买单价';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 8] := '计划购买金额';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 9] := '备注';
    MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 10] := '区域编号';    for iCol := 1 to exportset.FieldCount do
    begin
      MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, iCol].Select;
      MyExcel.Selection.Font.Bold := true;
      MyExcel.WorkBooks[1].WorkSheets[1].Columns[iCol].Font.size := 9;
    end;    MyExcel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[5].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[6].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[7].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[8].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[9].ColumnWidth := 20;
    MyExcel.WorkBooks[1].WorkSheets[1].Columns[10].ColumnWidth := 20;        Inc(iRow);
    varCells := VarArrayCreate([1,
      exportset.RecordCount,
        1,
        exportset.FieldCount], varVariant);
    while not exportset.eof do
    begin
      for iCol := 1 to exportset.FieldCount -4 do
      begin
        varCells[iRow - 1, iCol] :=''''+exportset.Fields[iCol - 1].AsString;
      end;
      Inc(iRow);
      exportset.Next;
    end;
    Cell1 := MyCells.Item[2, 1];
    Cell2 := MyCells.Item[exportset.RecordCount + 1,
      exportset.FieldCount];
    Range := MyExcel.WorkBooks[1].WorkSheets[1].Range[Cell1, Cell2];
    Range.Value := varCells;
    MyCells := Unassigned;
    Cell1 := Unassigned;
    Cell2 := Unassigned;
    Range := Unassigned;
    varCells := Unassigned;             //此句挺花时间,如果注释掉,则 -> **1  2003.12.05
    try
      form4.SaveDialog1.Filter:='datFile(*.dat)';
      form4.SaveDialog1.FilterIndex:=1;
      form4.SaveDialog1.DefaultExt :='dat';
      MyExcel.WorkBooks[1].saveas(form4.SaveDialog1.FileName);
      MyExcel.WorkBooks[1].close;
      MyExcel.quit;
      MyExcel := Unassigned;
    except      MyExcel.WorkBooks[1].close;
      MyExcel.quit;
      MyExcel := Unassigned;            //**1: 此句又要用许多时间,如果注释掉,则 -> **2
    end;
    messagebeep(1);  finally
    Screen.Cursor := crDefault;         ///////鼠标
  end;
  showmessage('导出成功!');
end;