程序代码如下:
_Application excelapp;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Range usedRange;
LPDISPATCH lpDisp; 
COleVariant
        covTrue((short)TRUE),
        covFalse((short)FALSE),
        covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!excelapp.CreateDispatch("Excel.Application"))
{
MessageBox("确认是否安装了Excel");
} books.AttachDispatch(excelapp.GetWorkbooks());
//打开Excel
lpDisp = books.Open(strText,      
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional );
book.AttachDispatch(lpDisp);
sheets.AttachDispatch(book.GetWorksheets());
lpDisp = book.GetActiveSheet();
sheet.AttachDispatch(lpDisp);
 
//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
//取得已经使用的行数
long iRowNum = range.GetCount();          
range.AttachDispatch(usedRange.GetColumns());
//取得已经使用的列数
long iColNum = range.GetCount();          
//取得已使用区域的起始行,从1开始
long iStartRow = usedRange.GetRow();
//取得已使用区域的起始列,从1开始
long iStartCol = usedRange.GetColumn();
        COleVariant x,y,z;
        range.AttachDispatch(sheet.GetCells());
        range.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)1)).pdispVal);
        x = range.GetValue();
        range.AttachDispatch(sheet.GetCells());
        range.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)3)).pdispVal);
        y = range.GetValue();
        //释放对象    
        range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
excelapp.ReleaseDispatch();
book.Close(covOptional,COleVariant(strText),covOptional);
books.Close();      
excelapp.Quit();
问题是:每次将EXCEL文件导入到SQL数据库,在任务管理器中都有一个EXCEL.EXE的进程,作为导入用的EXCEL文件相应也打不开,每次要结束EXCEL.EXE进程,都必须手动去结束,请问在VC中有没有用程序去控制。excelapp.Quit();这个应该是退出的语句,不知道为什么EXCEL.EXE进程却不能结束。

解决方案 »

  1.   

    range.ReleaseDispatch(); 
    sheet.ReleaseDispatch(); 
    sheets.ReleaseDispatch(); 
    book.ReleaseDispatch(); 
    books.ReleaseDispatch(); 
    excelapp.ReleaseDispatch(); 
    book.Close(covOptional,COleVariant(strText),covOptional); 
    books.Close();      
    excelapp.Quit();
    这些程序里面有没有接口释放呢?我不是很懂?你能给我说清楚一点不?非常感谢!!!
      

  2.   


    //注意顺序问题
    book.Close(covOptional,COleVariant(strText),covOptional); 
    books.Close();   
    book.ReleaseDispatch(); 
    books.ReleaseDispatch(); excelapp.Quit(); //退出;
    excelapp.ReleaseDispatch();//退出后再释放对象
      

  3.   

    MARK一下,确实是这样,按照3楼方法解决了!