VC++操作EXCEL的问题

时间:2021-08-19 19:55:22
部分代码如下:
void CXxDlg::OnOK() 
{
_Application ExcelApp; 
Workbooks wbsMyBooks; 
_Workbook wbMyBook; 
Worksheets wssMysheets; 
_Worksheet wsMysheet; 
Range rgMyRge; 
//创建Excel 2000服务器(启动Excel) 
if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) 

AfxMessageBox("创建Excel服务失败!"); 
exit(1); 

ExcelApp.SetVisible(false); 
//利用模板文件建立新文档 
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\stureporttemplate";
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
//得到Worksheets 
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
。。。。
。。。。
。。。。
。。。。
CDialog::OnOK();
}



编译时提示出错:

--------------------Configuration: xx - Win32 Debug--------------------
Compiling...
xxDlg.cpp
E:\xx\xxDlg.cpp(193) : error C2065: '_variant_t' : undeclared identifier
E:\xx\xxDlg.cpp(213) : error C2065: 'myexamsubmarkset_report' : undeclared identifier
E:\xx\xxDlg.cpp(213) : error C2227: left of '->MoveFirst' must point to class/struct/union
E:\xx\xxDlg.cpp(214) : error C2227: left of '->GetRecordCount' must point to class/struct/union
E:\xx\xxDlg.cpp(217) : error C2227: left of '->m_studentid' must point to class/struct/union
E:\xx\xxDlg.cpp(219) : error C2227: left of '->m_code' must point to class/struct/union
E:\xx\xxDlg.cpp(221) : error C2227: left of '->m_grade' must point to class/struct/union
E:\xx\xxDlg.cpp(223) : error C2227: left of '->m_kind' must point to class/struct/union
E:\xx\xxDlg.cpp(224) : error C2227: left of '->m_examdate' must point to class/struct/union
E:\xx\xxDlg.cpp(227) : error C2227: left of '->MoveNext' must point to class/struct/union
E:\xx\xxDlg.cpp(232) : error C2065: 'vtMissing' : undeclared identifier
Error executing cl.exe.

xx.exe - 11 error(s), 0 warning(s)





_variant_t这个为何会出错???求EXCEL高手指点下

6 个解决方案

#1


包含头文件 comutil.h

#2


包含头文件 comutil.h后

wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));

这两句话会报以下错误


--------------------Configuration: xx - Win32 Debug--------------------
Compiling...
xxDlg.cpp
Linking...
xxDlg.obj : error LNK2001: unresolved external symbol "void __stdcall _com_issue_error(long)" (?_com_issue_error@@YGXJ@Z)
xxDlg.obj : error LNK2001: unresolved external symbol "unsigned short * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPAGPBD@Z)
Debug/xx.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Creating browse info file...

xx.exe - 3 error(s), 0 warning(s)

#3


wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath))); 
->
wbMyBook.AttachDispatch(wbsMyBooks.Add(CComVariant(strPath))); 

#4


这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交

流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:六@二@

八@七@八@零@四@三。另外,这个群里可以接项目。

#5


链接有问题是因为你只包括了头文件comutil.h,而没有链接对应的库
comsuppw.lib 或 comsuppwd.lib 
加入的方法是
工程-->属性-->链接-->输入-->写上对应的库名就可以了
或加入代码
#pragma comment( lib, "comsuppwd.lib" )
这两个方法,用哪个都可以

#6


楼上正解,加上引入库即可。

#1


包含头文件 comutil.h

#2


包含头文件 comutil.h后

wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));

这两句话会报以下错误


--------------------Configuration: xx - Win32 Debug--------------------
Compiling...
xxDlg.cpp
Linking...
xxDlg.obj : error LNK2001: unresolved external symbol "void __stdcall _com_issue_error(long)" (?_com_issue_error@@YGXJ@Z)
xxDlg.obj : error LNK2001: unresolved external symbol "unsigned short * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPAGPBD@Z)
Debug/xx.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Creating browse info file...

xx.exe - 3 error(s), 0 warning(s)

#3


wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath))); 
->
wbMyBook.AttachDispatch(wbsMyBooks.Add(CComVariant(strPath))); 

#4


这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交

流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:六@二@

八@七@八@零@四@三。另外,这个群里可以接项目。

#5


链接有问题是因为你只包括了头文件comutil.h,而没有链接对应的库
comsuppw.lib 或 comsuppwd.lib 
加入的方法是
工程-->属性-->链接-->输入-->写上对应的库名就可以了
或加入代码
#pragma comment( lib, "comsuppwd.lib" )
这两个方法,用哪个都可以

#6


楼上正解,加上引入库即可。