1、对于微软的excel,用程序操作的话,有封装好的类。就是CSpreadSheet.h 和 CSpreadSheet.cpp。这个在CSDN上面可以下载。具体地址:http://download.csdn.net/detail/happyeggplant/2162615。
2、关于CSpreadSheet这个封装类的使用,有一个比较全的地址。http://www.vckbase.com/index.php/wv/494.html。上面有基本的一些操作。基本上需求都有了。
3、我按照上面网站,写了一个只要读取xls文件的程序。我的项目如图:
然后编译,出现问题。
问题1:------ 已启动生成: 项目: xls, 配置: Debug Win32 ------
生成启动时间为 2013-5-4 23:18:26。
InitializeBuildStatus:
正在创建“Debug\xls.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
ClCompile:
CSpreadSheet.cpp
c:\program files\microsoft sdks\windows\v7.0a\include\sqltypes.h(137): error C2146: 语法错误: 缺少“;”(在标识符“SQLHWND”的前面)
c:\program files\microsoft sdks\windows\v7.0a\include\sqltypes.h(137): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files\microsoft sdks\windows\v7.0a\include\sqltypes.h(137): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files\microsoft sdks\windows\v7.0a\include\sqltypes.h(275): error C2146: 语法错误: 缺少“;”(在标识符“Data1”的前面)
...........................
c:\program files\microsoft sdks\windows\v7.0a\include\sql.h(862): error C2143: 语法错误 : 缺少“)”(在“;”的前面)
c:\program files\microsoft sdks\windows\v7.0a\include\sql.h(862): fatal error C1003: 错误计数超过 100;正在停止编译
生成失败。
已用时间 00:00:03.43
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
照理说这个不应该出现问题啊。这个是系统的一些文件。我很纳闷。网上看了,也有这样的问题。
解决办法:我的CSpreadSheet.cpp文件的头文件是这样的:
#include "CSpreadSheet.h"
#include "StdAfx.h"
我将这个位置交换一下就没有问题了。这个头文件还是这么讲究。这样变成
#include "StdAfx.h"
#include "CSpreadSheet.h"
问题2.变成出现的char [] 无法转换成 wchar_t之类的。这个就是一个转换的了。
由于我用的VS 2010。所以我在项目-->属性-->配置属性-->字符集。将这一项改成:使用多字节字符集。就OK了。不然,用Unicode字符集就需要转换了。
问题3.odbccp32.lib(dllload.obj) : error LNK2019: 无法解析的外部符号 __imp___vsnprintf,该符号在函数 _StringVPrintfWorkerA@.....
这个问题就是odbccp32.lib这个找不到吧。
这个在C:\Program Files\下面搜索odbccp32.lib。然后就出现了。可能有多个,由于安装了多了VC编译器。然后在项目-->属性--->连接器-->输入。找到附加依赖项。将这个lib的路径加入进去。
经过这些过程,终于,编译成功,生成。
以此记录。