读书人

弱女子求解yi VC释放Excel的com对象有

发布时间: 2012-08-24 10:00:21 作者: rapoo

弱女子求解yi VC释放Excel的com对象问题。快浪费整整2个工作日了。。。

C/C++ code
BOOL ListV2Excel(char *pSzFile){  RangePtr ExlRge;   _WorksheetPtr ExlSheet;   SheetsPtr ExlSheets;   _WorkbookPtr ExlBook;   WorkbooksPtr ExlBooks;   _ApplicationPtr ExlApp;  CoInitialize(NULL);  ExlApp.CreateInstance("Excel.Application");  //ExlApp->PutVisible(0, VARIANT_TRUE);  ExlBooks = ExlApp->GetWorkbooks();  ExlBook = ExlBooks->Open(pSzFile);  ExlSheets = ExlBook->GetWorksheets();  ExlSheet = ExlBook->GetActiveSheet();  ExlRge = ExlSheet->GetRange("A2");  ExlRge->PutItem(1, 1, "Test!");  ExlBook->Save();  ExlBook->PutSaved(0, VARIANT_TRUE);  ExlRge->Release();  ExlSheet->Release();  ExlSheets->Release();  ExlBook->Close(FALSE);  ExlBook->Release();  ExlBooks->Close();  ExlBooks->Release();  ExlApp->Quit();  ExlApp->Release();  CoUninitialize();  return TRUE;  }

EXCEL.EXE进程倒是关闭了。函数运行到return TRUE时就弹出对话框,内容是
*****.exe 中的 0x0019a569 处未处理的异常: 0xC0000005: 写入位置 0x1501f800 时发生访问冲突
然后就代码页就跳到<comip.h>里的这个函数。
void _Release() throw()
{
if (m_pInterface != NULL) {
m_pInterface->Release();
}
}
应该是excel的com对象释放出错了,求大侠解答!

[解决办法]
CRangerange;
CWorkbooksxlBooks;
CWorkbookxlBook;
CApplicationm_ExcelApplication;//excel服务对象
CWorksheetssheets;
CWorksheetsheet;



....


sheet.ReleaseDispatch();//释放资源
sheets.ReleaseDispatch();
range.ReleaseDispatch();
//xlBook.ReleaseDispatch();
xlBooks.ReleaseDispatch();
xlBooks.Close();
m_ExcelApplication.ReleaseDispatch();
m_ExcelApplication.Quit();



我N久前的代码...
[解决办法]
弱女子 这个标题太酷了
[解决办法]
BOOL ListV2Excel(char *pSzFile)
{
RangePtr ExlRge;
_WorksheetPtr ExlSheet;
SheetsPtr ExlSheets;
_WorkbookPtr ExlBook;
WorkbooksPtr ExlBooks;
_ApplicationPtr ExlApp;
CoInitialize(NULL);
{ // 加一个大括号
ExlApp.CreateInstance("Excel.Application");
//ExlApp->PutVisible(0, VARIANT_TRUE);
ExlBooks = ExlApp->GetWorkbooks();
ExlBook = ExlBooks->Open(pSzFile);
ExlSheets = ExlBook->GetWorksheets();
ExlSheet = ExlBook->GetActiveSheet();
ExlRge = ExlSheet->GetRange("A2");
ExlRge->PutItem(1, 1, "Test!");
ExlBook->Save();
ExlBook->PutSaved(0, VARIANT_TRUE);

ExlRge->Release();
ExlSheet->Release();
ExlSheets->Release();
ExlBook->Close(FALSE);
ExlBook->Release();
ExlBooks->Close();
ExlBooks->Release();
ExlApp->Quit();
ExlApp->Release(); // 这一句不能要
} // 加一个反大括号
CoUninitialize();
return TRUE;
}

[解决办法]
zuonvren"ting"hao
[解决办法]
哈哈哈哈,标题党!

读书人网 >VC/MFC

热点推荐