前几天问过这个问题,很多朋友给了我回答。本以为解决了。但现在新问题又来了。
代码如下: ... ExcelApp,workbook: Variant; ... ExcelApp:=CreateOleObject( 'Excel.Application '); workbook:=CreateOleObject( 'Excel.sheet ');
上次大家给我的代码是: workbook.close; ExcelApp.quit; workbook:=unassigned; excelapp:=unassigned;
这些代码放在窗口的onclose方法里没问题,当窗口释放后,EXCEL对象也会中内存中清出。但我如果把这些代 码放在其他地方,比如按钮的onclick里,就不行了,点了按钮后,EXCEL对象还是驻留在内存里。
我的程序的功能是把excel表中的数据导入到access里。我的想法是导入完一个excel表后,先把excel对象释放
,然后可以继续选另一个要导入的excel表。我把释放的代码放在导入按钮里。但结果是,导入数据后,excel
对象不能释放。再选其他excel表,再按导入键,就会出错。
请问应该怎样才能通过单击按钮释放excel对象?
解答:
workbook没有释放 其实不用WorBook也行,如下: Try ExcelApp:= CreateOleObject( 'Excel.Application ' ); ExcelApp.WorkBooks.Open(YourXlsFileName);//打开Excel文件 ExcelApp.WorkSheets[1].Activate;//设定第一个Sheet为活动的
ExcelApp.Cells[i,j].Value:=YourString;//向单元格中写数据 YourString:=ExcelApp.ActiveSheet.Cells.item[i,j]); //读取单元格.
ExcelApp.ActiveSheet.PrintOut;//答应 ExcelApp.ActiveWorkBook.SaveAs(SavedFileName);//存盘 ExcelApp.Quit; ExcelApp:=UnAssigned; Except Try //多用一个Try..Finally是防止在读写单元格过程中出错,退出时可能没有释放Excel,造成内存漏洞 ExcelApp.ActiveWorkBook.Saved := True; ExcelApp.Quit; Finally ExcelApp:=UnAssigned; End; End;
|
请发表评论