使用 OLE 操作 Excel ,在多线程下使用报错问题解决

来源:互联网 发布:传奇永恒四区数据互通 编辑:程序博客网 时间:2024/05/19 15:19

 添加 CExcelOLE 类

在 MFC 中,操作 Excel 表格内容还是比较方便的,直接VS 的工作项目添加类即可。

大致如下:

1 工程属性右键 Add Class -> MFC -> MFC Class From TypeLib -->Add



2 在 Available type libraries: 选择电脑上的 Excel 版本库,然后选择如下的几个类添加到右边框,完成即可在项目内生成一个 CExcelOLE 类。



改写构造函数

默认支持的是在主线程内使用,如果在创建的子线程中使用会报错,这便需要在构造 Ole 对象的时候分别设定是否采用多线程模式来初始化了。

代码如下:

CExcelOLE::CExcelOLE(BOOL bMultiThreaded){if (bMultiThreaded){CoInitializeEx(NULL,COINIT_MULTITHREADED); //可以在多线程中使用COM, 但是可能会导致有些依赖 MFC 的操作异常}else{CoInitialize(NULL);}if(!m_app.CreateDispatch(_T("Excel.Application"),NULL))//启动了6个线程{m_bOleReady = false;}else{m_bOleReady = true;}m_lpDisp = NULL;}

使用

在创建的子线程函数内调用:


CExcelOLEExcel(TRUE);//多线程方式初始化Excel.OpenExcel(m_strFilePath);Excel.OpenSheet();




0 0
原创粉丝点击