VC操作EXCEL(控制台程序使用MFC)

本文绝大部分步骤copy自 http://www.tuicool.com/articles/ZBFJJn ,原作者写得非常好,我向原作者致敬。
我书写本文供以后查阅,想看原文的请戳链接。
链接http://blog.csdn.net/fullsail/article/details/8449448里封装了一个处理EXCEL的类,非常不错。

边写边记录ing...

◆怎么查到VC中的“#import指令”的用法?
答:在https://msdn.microsoft.com/搜索“#import Directive (C++)”,可以得到如下两个网址,这两个网址讲述了其用法:
【#import 指令 (C++)】【#import Directive (C++) 】https://msdn.microsoft.com/zh-cn/library/8etzzkb6.aspx
【#import 特性 (C++)】【#import Attributes (C++)】https://msdn.microsoft.com/zh-cn/library/298h7faa.aspx
讲述#import的一个非官方的文章:http://www.cnblogs.com/xiaotaoliang/archive/2005/07/20/196257.html
◆参考链接:
文章头部已有的两个链接。
http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html
http://blog.csdn.net/fullsail/article/details/4067416
◆我的环境:
Win7,Office 2013,VS2013。

1. 创建一个Win32 Console Application的Project,同时在Application Setting中勾选MFC。


2. 为这个Project添加excel的几个基本的接口类的头文件。

说明: Excel 作为 OLE/COM 库插件,定义好了各类交互的接口,这些接口是跨语言的接口。 VC 可以导入这些接口,并通过接口对 Excel 进行操作。由于本文只关心对 Excel 表格中的数据的读取,主要关注7个接口:_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range、Font。

操作:Add->Class->MFC->MFC Class From TypeLib,然后在“Location”处填入“C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE”(视实际情况填写),然后选择要生成的那些类,然后确定。如下图:


然后


在Interfaces里选择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range、Font到右侧。


3. 导入之后,生成了几个.h文件,我们需要对这几个.h文件稍微做一下修改。

①注释掉【#import "C:\\Program Files (x86)\\Microsoft Office\\Office15\\EXCEL.EXE" no_namespace】
②在.h文件头部添加【#include <afxdisp.h>】

4. 修改并编译程序,确保程序可以编译成功。

在cpp文件中include这几个.h文件。这几个.h文件中,每个文件里面都声明了一个接口类。我们把每个接口类都在cpp文件中定义一个对象,然后编译,如果报错,处理错误。

一般可能遇到这个错误:

vc_console_use_excel\crange.h(335): warning C4003: not enough actual parameters for macro 'DialogBoxW'
vc_console_use_excel\crange.h(335): error C2059: syntax error : ','
//报错的代码为【VARIANT DialogBox()】,可以改为【VARIANT DialogBox_()】,再次编译,通过。
5. 自行编辑代码即可。

注:链接http://www.tuicool.com/articles/ZBFJJn里有读取Excel文件的代码,可以参考一下。

注:链接http://blog.csdn.net/fullsail/article/details/8449448里有一个封装好的.h和.cpp文件,直接用的话,可能会报错。我将它们稍微修改了一下下,然后放到了链接:http://blog.csdn.net/u013600225/article/details/50935106里,你可以直接将它们添加到本Project里,然后就可以使用了。

注:链接http://bbs.csdn.net/topics/390716982里有如下信息可用:

if( !app.CreateDispatch("Excel.Application") ){  
    this->MessageBox("无法创建Excel应用!");  
    return;  
}
如果这段代码一直失败,在这段代码之前重新初始化一下,加入CoInitialize(NULL);就OK了。



完。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值