我想问的是:
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]);
13 个解决方案
#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的读取。
'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的组件,这样是不是就可以使程序正常运行了?
有资料说可以用以下方式解决:
可以使用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
看来要无答案结贴了
#6
同問~
#7
跟我一样的问题,哎
#8
我觉得最好不用DELPHI上自带的控件操作EXCEL
用自动化操作好些,
用自动化操作好些,
#9
建议用三方控件试试
XLSReadWrite
XLSReadWrite
#10
怎么办呢,就是不想重写
#11
1、导出的话 dbgrideh有专门导出到excel的方法的 导出的是2007以下版本 (安装了2007也是一样)
2、加入用comobj 来做的话
不知道是不是你要的
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;
不知道是不是你要的
#12
留个脚印!
#13
2007 Excel文件格式是 .xlsx
#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的读取。
'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的组件,这样是不是就可以使程序正常运行了?
有资料说可以用以下方式解决:
可以使用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
看来要无答案结贴了
#6
同問~
#7
跟我一样的问题,哎
#8
我觉得最好不用DELPHI上自带的控件操作EXCEL
用自动化操作好些,
用自动化操作好些,
#9
建议用三方控件试试
XLSReadWrite
XLSReadWrite
#10
怎么办呢,就是不想重写
#11
1、导出的话 dbgrideh有专门导出到excel的方法的 导出的是2007以下版本 (安装了2007也是一样)
2、加入用comobj 来做的话
不知道是不是你要的
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;
不知道是不是你要的
#12
留个脚印!
#13
2007 Excel文件格式是 .xlsx