使用多线程导出ListView中的数据到excel(OLE)
我要导出listview中全部数据,使用多线程导出,每次到
vExcelApp = Variant::CreateObject("Excel.Application");
这个位置的时候会出错,提示“。。。。尚未调用 CoIntialize。。”,
我没使用多线程之前,都是好好的。使用之后到这里出错了。
线程调用的代码如下:
DWORD WINAPI ThreadFunc(LPVOID ipParameter)
{
int i;
TForm1 *pForm;
String s;
pForm=(TForm1 *)ipParameter;
AnsiString fileName_excel ;//保存excel文件名
AnsiString wjj;//需要创建的文件夹的名字
TObject *Sender;
wjj=fileP+"\\CT-VI";
AnsiString RootDir(ParamStr(0)); //返回当前应用程序的路径
AnsiString serverPath=ExtractFilePath(RootDir);
if(!DirectoryExists(wjj)) //如果不存在这个文件夹,就创建出来
ForceDirectories(wjj);
wjj=StringReplace(wjj, "\\\\", "\\",TReplaceFlags()<<rfReplaceAll);
fileP = wjj;
for(int l=0;l<pForm->ListView1->Items->Count;l++)
{
pForm->ListView1->Selected=pForm->ListView1->Items->Item[l];
pForm->ListView1Click(Sender);
AnsiString name = wjj + "\\CTVI" + FormatFloat("#000",pForm->ListView1->Selected->Caption.ToInt());
fileName_excel= name+".xls";
SaveExeclFA(pForm->ListView2,fileName_excel,serverPath,pForm->ListView5,pForm->Edit3->Text,"CT变比极性测试:");
}
}
不知道是哪里出问题了,请大神们帮忙看一下
[解决办法]
都提示的那么清楚了。在线程函数里开始的地方调用CoInitialize初始化,在结束的地方调用CoUninitialize反初始化。
[解决办法]
包含头文件#include "utilcls.h "
CoIntialize
CoUninitialize