我有个程序,生成Excel,但安装了Excel2007后无法使用了。我希望不用改代码就能使用。我想问的是:
1、能不能在PC上同时安装Excel2003和Excel2007。这样是不是程序就能使用了?
2、能不能在安装包里将Excel2000对应的组件打包进去,当安装程序时也将Excel2000对应的组件也注册。Excel2000对应的组件是哪个?谢谢大家!以下是我所采用的示例代码
uses
  Excel2000;procedure TWriteToExcel_Vendor_Details.Write();
var
  ExcelApplication: TExcelApplication;
  ExcelWorkbook1: TExcelWorkbook;
  ExcelWorksheet1: TExcelWorksheet;
  ExcelWorksheet2: TExcelWorksheet;
  ExcelWorksheet3: TExcelWorksheet;
  Temp_Worksheet: _WorkSheet;
  range:ExcelRange;
  i, j: integer;
  filename: string;
  msg:string;
  position:string;
  temp:OleVariant;
begin
  msg := #$D#$A + datetimetostr(gettime())+ '>>>开始创建Exel文件.....' + #$D#$A + writetoexcel.FrmMain.msg.Text;
  WriteToExcel.FrmMain.msg.Text := msg;
  filename := concat(extractfilepath(application.exename),'AC_Vendor_Details_'+writetoexcel.FrmMain.ComboBox1.Items[writetoexcel.FrmMain.ComboBox1.ItemIndex], '.xls');      try
    ExcelApplication := TExcelApplication.Create(Application);
    ExcelWorkbook1 := TExcelWorkbook.Create(Application);
    ExcelWorksheet1 := TExcelWorksheet.Create(Application);
    ExcelWorksheet2 := TExcelWorksheet.Create(Application);
    ExcelWorksheet3 := TExcelWorksheet.Create(Application);
    ExcelApplication.ConnectKind := ckRunningOrNew;
    ExcelApplication.Connect;
    ExcelApplication.Workbooks.Add(EmptyParam, 1);
    ExcelWorkbook1.ConnectTo(ExcelApplication.Workbooks[1]);

解决方案 »

  1.   

    不会,好象Excel2007的一些底层都有点不一样了...
      

  2.   

    连接字符串改变为 
    'Provider=Microsoft.ACE.OLEDB.12.0;Password="";Data Source='+FileName+';Extended Properties=''Excel 12.0;IMEX=1;HDR=YES'';Persist Security Info=True;' 
    就可以实现对2007的读取。 
      

  3.   

    学习,我也是同感,很困惑。我用的是Delphi6+Office2007
      

  4.   

    TO De410,感谢你的支持,我的问题不是读取,是怎样生成。有资料说可以用以下方式解决:
    可以使用Automation技术控制Excel。如:   
            var   MyExcel,   MyWorkbook:Variant;   
              
            procedure   TForm1.Button1Click(Sender:   TObject);   
            begin   
              MyExcel   :=   CreateOleObject( 'Excel.Application ');   
              MyExcel.Visible   :=   true;   
              MyWorkbook   :=   MyExcel.Workbooks.Open( 'e:\book1.xls ');   
              MyExcel.ActiveCell.FormulaR1C1   :=   'sssssss ';   
            end;   
    但这个方案需要重写代码,可我不希望这样。我想能不能在客户的机器上注册Office2000的组件,这样是不是就可以使程序正常运行了?
      

  5.   

    我觉得最好不用DELPHI上自带的控件操作EXCEL
    用自动化操作好些,
      

  6.   

    建议用三方控件试试
    XLSReadWrite
      

  7.   

    1、导出的话  dbgrideh有专门导出到excel的方法的 导出的是2007以下版本  (安装了2007也是一样)   
    2、加入用comobj 来做的话
       
    var  ex:Variant;  ex := CreateOleObject('Excel.Application');
      ex.WorkBooks.Add;
      ex.WorkSheets[1].Activate;//这里为excel添加数据  
       ex.workbooks[1].saveas(sd_xls.FileName); //保存文件  这里好像是看你安装的是那个版本  是2007 他就直接生成2007的了
        ex.workbooks[1].close; //关闭工作表
        ex.quit; //关闭Excel
        ex := unassigned;不知道是不是你要的  
      

  8.   

    2007 Excel文件格式是 .xlsx