读书人

VS 2008中操作Excel 2007的有关问题

发布时间: 2012-05-10 16:02:39 作者: rapoo

VS 2008中操作Excel 2007的问题。
第一次涉及这个内容,向大家请教一下,在VS2008(VC++)中如何操作excel 2007。

1.过创建基于对话框的APP,然后在添加类中从类型库中导出excel 2007的函数,但是我不知道要导出哪些?

2.参考网上的代码(http://support.microsoft.com/kb/192348)后猜想可能是要导出_Application,所以选择导出了_Application,之后编译器生成了如下代码

C/C++ code
// 从类型库向导中用“添加类”创建的计算机生成的 IDispatch 包装类#import "D:\\Program Files\\Microsoft Office\\Office12\\EXCEL.EXE" no_namespace// CApplication 包装类class CApplication : public COleDispatchDriver{public:    CApplication(){} // 调用 COleDispatchDriver 默认构造函数    CApplication(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}    CApplication(const CApplication& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}    // 属性public:    // 操作public:    // _Application 方法public:    LPDISPATCH get_Application()    {        LPDISPATCH result;        InvokeHelper(0x94, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);        return result;    }        BOOL get_HighQualityModeForGraphics()    {        BOOL result;        InvokeHelper(0x95b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);        return result;    }代码太多,中间的省略掉了。    void put_HighQualityModeForGraphics(BOOL newValue)    {        static BYTE parms[] = VTS_BOOL ;        InvokeHelper(0x95b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);    }    // _Application 属性public:};

看不懂是什么意思。

3. 如1,在使用_Application对象的cpp中引用2中定义的头文件后,编译出现错误,在debug文件夹下生成了一个excel.tlh文件,编译器报错,说是在这个文件中重复定义了很多变量。

最后,请教下大家,正确的做法是什么?


[解决办法]
#import "E:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL"
#import "E:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" \
rename_namespace("VBIDE")
#import "E:\Program Files\Microsoft Office\Office10\Excel.EXE" \
rename("DialogBox", "DialogBoxXL") \
rename("RGB", "RGBXL") \
rename("ExitWindows", "ExitWindowsXL") \
rename("DocumentProperties", "DocumentPropertiesXL") \
no_auto_exclude

[解决办法]
先导入MSO,VBE6EXT等相关,然后是excel...

读书人网 >VC/MFC

热点推荐