首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-08-24 
弱女子求解yi VC释放Excel的com对象问题。快浪费整整2个工作日了。。。C/C++ codeBOOL ListV2Excel(char *pSzF

弱女子求解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
[解决办法]
哈哈哈哈,标题党!

热点排行