delphi excel 对象释放

代码如下: 
  ... 
  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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种编程语言,可以用于开发Windows平台的应用程序。在Delphi中,可以使用COM组件来实现Excel导入SQL的功能。 首先,需要使用Delphi中的COM组件来操作Excel文件。可以使用TExcelApplication组件来打开Excel文件,并使用TExcelWorkbook和TExcelWorksheet组件来读取和写入Excel数据。 接下来,需要将Excel数据导入到SQL数据库中。可以使用ADO(ActiveX Data Objects)组件来连接数据库,并使用SQL语句将Excel数据插入到数据库表中。 以下是一个简单的示例代码,演示了如何使用Delphi实现Excel导入SQL的功能: ```delphi uses ComObj, ADODB; procedure ImportExcelToSQL(const ExcelFilePath, TableName: string); var ExcelApp: Variant; Workbook: Variant; Worksheet: Variant; Connection: TADOConnection; Query: TADOQuery; Row, Col: Integer; begin // 创建Excel对象 ExcelApp := CreateOleObject('Excel.Application'); try // 打开Excel文件 Workbook := ExcelApp.Workbooks.Open(ExcelFilePath); Worksheet := Workbook.Worksheets; // 连接数据库 Connection := TADOConnection.Create(nil); Connection.ConnectionString := 'Provider=SQLOLEDB;Data Source=YourServer;Initial Catalog=YourDatabase;User ID=YourUsername;Password=YourPassword'; Connection.Connected := True; // 创建查询对象 Query := TADOQuery.Create(nil); Query.Connection := Connection; // 遍历Excel数据并插入到数据库表中 for Row := 1 to Worksheet.UsedRange.Rows.Count do begin Query.SQL.Text := 'INSERT INTO ' + TableName + ' VALUES ('; for Col := 1 to Worksheet.UsedRange.Columns.Count do begin Query.SQL.Text := Query.SQL.Text + QuotedStr(Worksheet.Cells[Row, Col].Value) + ','; end; Query.SQL.Text := Copy(Query.SQL.Text, 1, Length(Query.SQL.Text) - 1) + ')'; Query.ExecSQL; end; // 释放资源 Query.Free; Connection.Free; Workbook.Close; finally // 关闭Excel应用程序 ExcelApp.Quit; ExcelApp := Unassigned; end; end; ``` 使用上述代码,你可以将指定Excel文件中的数据导入到指定的SQL数据库表中。需要注意的是,你需要根据实际情况修改连接字符串和Excel文件路径、表名等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值