我有个程序,生成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、能不能在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]);
'Provider=Microsoft.ACE.OLEDB.12.0;Password="";Data Source='+FileName+';Extended Properties=''Excel 12.0;IMEX=1;HDR=YES'';Persist Security Info=True;'
就可以实现对2007的读取。
可以使用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的组件,这样是不是就可以使程序正常运行了?
用自动化操作好些,
XLSReadWrite
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;不知道是不是你要的