弱女子求解yi VC释放Excel的com对象问题。快浪费整整2个工作日了。。。C/C++ codeBOOL ListV2Excel(char *pSzF
弱女子求解yi VC释放Excel的com对象问题。快浪费整整2个工作日了。。。
C/C++ codeBOOL 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
[解决办法]哈哈哈哈,标题党!