我书写本文供以后查阅,想看原文的请戳链接。
链接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了。
完。