!!!很急 OLEcontainer使用excel(200分)

  • 主题发起人 主题发起人 chunerd
  • 开始时间 开始时间
C

chunerd

Unregistered / Unconfirmed
GUEST, unregistred user!
用OLEcontainer创建了excel以后,也加载了excel文件,如何能够不关闭OLEContainer就能释放excel文件?因为我不能释放这个excel导致我在次加载excel的时候,系统报错,而且反复记载多次不同的excell的时候,还要报合并单元格的错误,请教各位神仙,我已经没有血了!!!
 
OleContainer.DestroyObject;
 
如果使用OleContainer.DestroyObject;那么第二次如何加载excel文件呢?
 
OleContainer.CreateObjectFromFile('Excel文件',False);
 
老兄,真的不行也,
OleContainer1.DestroyObject;
OleContainer1.CreateObjectFromFile(GetCurrentDir+'/TongJi_excel/book1.xls',false);
这样会报错
 
我都要上吊了:(.......滴血
 
报什么错,我这怎么什么问题都没有?
 
我用的是delphi5,是不是版本的问题?
报错是Project P_XJDL.exe raised exception class EOleSysError with message 'OLE error 80030002' .Process stopped,Use Step or Run to Continue.
 
我用的是D7,但我换D5结果也是正常,下面是我测试的代码

procedure TForm1.FormCreate(Sender: TObject);
begin
OleContainer1.CreateObjectFromFile('c:/123.xls',False);
OleContainer1.DoVerb(-1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
OleContainer1.DestroyObject;

OleContainer1.CreateObjectFromFile('c:/456.xls',False);
OleContainer1.DoVerb(-1);
end;
 
试过结果了,我换成一个不存在的文件则报80030002错误,检查你的路径是否有误?
 
我的文件没有问题
是不是我的下面这个对象没有释放?
v:=OleContainer1.OleObject ;
...
V.WorkSheets[1].Range['A'+inttostr(i)].Value := '合计:';
//C,D,E
v.WorkSheets[1].Range['C'+inttostr(i)].FormulaR1C1 := '=SUM(R[-6]c:R[-1]c)';
v.WorkSheets[1].Range['D'+inttostr(i)].FormulaR1C1 := '=SUM(R[-6]c:R[-1]c)';
v.WorkSheets[1].Range['E'+inttostr(i)].FormulaR1C1 := '=SUM(R[-6]c:R[-1]c)';
...
 
这个应该没关系,你只是引用了OleContainer.OleObject,没必要也不能释放,实际上还是要用DestroyObject才会释放
 
pihome非常感谢你,因为我使用了全局变量(faint),在改变了目录后目录出现错误,结果报错。昨天一天都在外边,今天也跑了大半天,现在才安静的坐下来。再次感谢你的帮助!
 
后退
顶部