如题,我在电脑上装的是OFFICE2007,结果现在编的时候,默认导出为.xlsx格式,而不是.xls格式。
代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
excels,sheets: Variant;
begin
  {ea1.Quit;
  ea1.Disconnect;  }
  dir:=getcurrentdir();
  try
    excels:=createoleobject('excel.application');
    sheets:=CreateOleObject('excel.sheet');
    excels.visible:=false;
    sheets:=excels.workbooks.add;
    excels.caption:=edit3.Text;
    if savedialog1.Execute then
    for i:=1 to sg.RowCount do
      for j:=1 to sg.ColCount do
        begin
          excels.cells[i,j]:=sg.Cells[j-1,i-1];
        end;
    showmessage('导出操作完成!');
    sheets.saveas(savedialog1.FileName);
    sheets.close;
    excels.quit;
    excels:=unassigned;
  except
  end;
end;
运行导出结果为.xlsx格式,请问要如何才能变成.xls格式?
我曾试过str:=savedialog1.FileName+'.xls';
sheets.saveas(str);
不过结果打开所保存的文件时说,您尝试打开的文件"6.xls"与文件扩展名指定的格式不一致。

解决方案 »

  1.   

    看得不是很清楚
    不过代码应该是没有什么问题.
    关键在savedialog1的默认类型上.把这个贴上来看看.
    ps: 代码是网上下的?
      

  2.   

    str:=savedialog1.FileName+'.xls';
    这样获取到的文件名形式如:6.XLSX.XLS;所以你就打不开6.XLS了
    你试下这样做,获取文件名:
    var 
       str,str1:string;
    begin
            str:=savedialog1.FileName   //获取文件名test01.txt
            str1:=ExtractFileExt(str);   //获取扩展名.txt
            setLength(str,length(str)-length(str1));   //将扩展名部分抛弃
             str:=str+'.xls';
    end;
    这样所获得的扩展名看下是不是.XLS我是个初学者,可能还有更简单的方法
      

  3.   

    savedialog1 的DefaultExt 设置为.xls
      

  4.   

    代码是自己写的,另,DefaultExt设成了.xls 还是说扩展名不一致
      

  5.   

    用robort兄弟的方法也试过了,还是说扩展名不一致,但是能强制打开
      

  6.   

    楼主试试下面的代码:sheets.SaveAs(savedialog1.FileName, 56);  // Office Excel 97-2003 format推荐阅读:Use VBA SaveAs in Excel 2007 (http://www.rondebruin.nl/saveas.htm)