问一个C++在windows 下读取excel的问题?

hellopower 2008-01-04 04:08:57
我刚才在论坛里搜索了一下,很多帖子,我贴了一段代码

CString strFilePath = L"111.xls";
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;


if(!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}

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

wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);

wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet3")),true);

rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);

int column = rgMyRge.GetColumn();
int row = rgMyRge.GetRow();
VARIANT tt;
///////////////
Range cell;//增加一个对象
cell.AttachDispatch(rgMyRge.GetItem(COleVariant((long)1),COleVariant((long)1)).pdispVal,true);
tt = cell.GetValue2();//取值
////////////
CString yy;
yy = tt.bstrVal;
// AfxMessageBox(yy);//输出值

cell.ReleaseDispatch();
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();

这个是通过com接口访问excel把,需要包含什么头文件和库呢,编译一堆错误,谢谢
...全文
351 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr.zhoux 2008-01-05
  • 打赏
  • 举报
回复
唉,这个到底怎么用啊,郁闷死了,
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet
这些东西到底要包含什么头文件啊,哪个大侠给指点一下撒。


你在导入类的时候会在你的根目录上有相关的文件的,包括近来就好了,你用的是excel2k我不知道是什么,excel xp以上都是CApplication CWorkBook,CWorksheets,CWorksheet
cihw2005 2008-01-05
  • 打赏
  • 举报
回复
#include "excel.h"
#include "comdef.h"
菜牛 2008-01-05
  • 打赏
  • 举报
回复
MSDN上有范例啊。
hellopower 2008-01-05
  • 打赏
  • 举报
回复
谢谢,问题已经解决
jameshooo 2008-01-04
  • 打赏
  • 举报
回复
在stdafx.h里面添加 #import "...\\excel9.tlb" 具体哪个文件要看实际情况,也可能是dll、exe等有类型库的文件,无需再添加任何头文件,因为导入之后会产生excel.tlh和excel.tli文件,相当于头文件。
使用过程很简单:
_Application* pExcelApp = NULL;
CoCreateInstance(..., &pExcelApp); // 这里启动EXCEL实例
有了pExcelApp,你能导航到任何其它对象,包括_Worksheet等等
hellopower 2008-01-04
  • 打赏
  • 举报
回复
说是有一个excel8.h excel8.cpp,可是我导入以后只有一堆头文件,没有增加cpp
小明的程序 2008-01-04
  • 打赏
  • 举报
回复
up
hellopower 2008-01-04
  • 打赏
  • 举报
回复
唉,这个到底怎么用啊,郁闷死了,
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet
这些东西到底要包含什么头文件啊,哪个大侠给指点一下撒。
hellopower 2008-01-04
  • 打赏
  • 举报
回复
终于导入了,唉,包含什么头文件啊,excel9.h excel8.h都不行
hellopower 2008-01-04
  • 打赏
  • 举报
回复
唉!vs2005没有classwizard,你们都还在用VC6么?请问2005如何导入,谢谢
sjdev 2008-01-04
  • 打赏
  • 举报
回复
classwizard-->automation->add class...-->from type library->...\office11\excel.exe
(我所使用的是excel2003,对于其它版本的office,请选择excel*.olb)

然后选择你用到的。
qq14923349 2008-01-04
  • 打赏
  • 举报
回复
odbc只需客户方面有xls协议还是什么那个忘记了,大部分都有的
而automation要求的似乎多些
hellopower 2008-01-04
  • 打赏
  • 举报
回复
ODBC不方面把,我看那个code了,应该不如com方式
hellopower 2008-01-04
  • 打赏
  • 举报
回复
唉,没人知道么,怎么用VS2005下用C++访问一个excel文件,谁能贴段code
qq14923349 2008-01-04
  • 打赏
  • 举报
回复
建议用ODBC
http://www.vckbase.com/document/viewdoc/?id=421
iceriver_1980 2008-01-04
  • 打赏
  • 举报
回复
你这个应该是atuoautomation方式
classwizard-->添加类库-->浏览类库文件-->选择excel安装文件夹里面的excel9.olb(如果是office2000版的话),其他版本记不得了-->选择需要的类(一般都是全选)-->添加
在这之后要include一下excel9.h(如果是office2000版的话)其他版本的话,可以上网查询一下看看匹配的版本。
hellopower 2008-01-04
  • 打赏
  • 举报
回复
我用的是VS2005,如何导入,没有classwizard.
qq14923349 2008-01-04
  • 打赏
  • 举报
回复
是ODBC写入还是automation方式导入?
oldmanzhao 2008-01-04
  • 打赏
  • 举报
回复
要导入Excel的类型库,用ClassWizard

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧