我现在要在vc++6.0中实现对一个已经存在的excel文件进行操作,但是当我去创建excel的时候就出错了,根本过不去,我的代码是:
_Application DSLApp;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
LPDISPATCH lpDisp;    //接口指针
Range range;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if( !DSLApp.CreateDispatch("Excel.Application"/*,NULL*/))
{
AfxMessageBox(_T("无法创建Excel应用!"));
return;
   }
另外在app文件中我也已经初始化过了,如下代码:
if( !AfxOleInit())
{
AfxMessageBox(_T("初始化Ole出错!"));
return FALSE;
}
我每次运行到if( !DSLApp.CreateDispatch("Excel.Application"/*,NULL*/))
,就报错,错误如下:Unhandled exception in  .exe(MFC042D.DLL):0xc0000005:Access Violation(弹出的一个对话框。)
非常感谢!

解决方案 »

  1.   

    1. 在使用Excel时候,需要初始化COM库
    if(CoInitialize(NULL) != NULL)
    {
    AfxMessageBox("初始化COM失败!");
    }
     2.
    //在程序退出的时候需要清除COM库
    CoUninitialize();
      

  2.   

    我直接把初始化的这段,放在了我的按钮相应程序里面,直接就“初始化COM失败”了。不知道怎么回事?
      

  3.   

    if(FAILED(CoInitialize(NULL))/* != NULL*/)
    {
       AfxMessageBox("初始化COM失败!");
    }
    经过网上查询,用这句来初始化com,但是虽然初始化成功了,但是走到我的那一句还是过不去呀?
      

  4.   

    参考一下这篇文章
    http://www.vckbase.com/document/viewdoc/?id=693
      

  5.   

    我想对具体的每个单元进行操作,给其填值,我看CSpreadSheet里面好像实现这个功能。
      

  6.   

    在app里进行初始化,不要放在按钮里
      

  7.   

    你电脑里安装excel了吗?没装就不行
      

  8.   

    恩,在app中初始化也不行呀,我的系统是xp,然后我安装的是office2003
      

  9.   

    楼主,你单位问题解决了没有?我也碰到同样的问题,解决不了,重装了office也一样有问题