前段时间忙着毕业论文,终于有时间写博客了。

早些时候老大给我的一个任务需要对excel进行读表操作,研究了一下c++对excel的操作。

对Excel的操作基本有com,ODBC,AD等,其中ODBC有一个封装的库CSpreadSheet,但它只能对2003版进行操作,不兼容2007版,然后我就找了一个收费的libxl的库,网上有破解版,它兼容2007版,而且提供的接口非常简单,重要的是兼容多字节的版本(网上说只兼容unicode版,我也不知道怎么回事)。

我下的是libxl-3.1.0,函数的接口和说明在官网有:http://www.libxl.com/documentation.html;

使用还是老样子 libxl.h , libxl.lib , libxl.dll  三个文件

下面直接上例子:    //控制台,mfc库(因为我要对CString进行操作)

// ExcelTest.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <Windows.h>
#include"libxl.h"
#pragma comment (lib,"libxl.lib")
#include"ExcelTest.h"
using namespace std;
using namespace libxl; #define DLLCLASS_EXPORTS
//中文的内容读出来后要进行编码的转换,这个为转换函数:wchar_t to char
char *w2c(char *pcstr,const wchar_t *pwstr, size_t len)
{
int nlength=wcslen(pwstr);
//获取转换后的长度
int nbytes = WideCharToMultiByte( , , pwstr, nlength, NULL,,NULL, NULL );
if(nbytes>len) nbytes=len;
// 通过以上得到的结果,转换unicode 字符为ascii 字符
WideCharToMultiByte( ,, pwstr, nlength, pcstr, nbytes, NULL, NULL );
return pcstr ;
} void myDllFunc(char *destStr)
{
libxl::IBookT<wchar_t>* book;
bool retLoad;
int i=;
cin>> i;
if(i!=)
{
book = xlCreateBookW();
retLoad=book->load(L"E:\\代码\\ExcelTest\\Debug\\3.xls");
}
else
{
book = xlCreateXMLBookW();
retLoad=book->load(L"E:\\代码\\ExcelTest\\Debug\\1.xlsx");
} if(retLoad)
{
libxl::Sheet * sheet = book->getSheet();
if(sheet){
libxl::CellType celltype = sheet->cellType(,);
switch(celltype)
{
case CELLTYPE_NUMBER:
{
double intmy =sheet->readNum(,);
char csNum[]={};
sprintf(csNum,"num:%ld",intmy);
cout<<csNum<<endl;
break;
}
case CELLTYPE_STRING:
{
cout<<"true\n";
const wchar_t * t = sheet->readStr(,);
char *pcstr = (char *)malloc(sizeof(char)*( * wcslen(t)+));
memset(pcstr , , * wcslen(t)+ );
w2c(pcstr,t, * wcslen(t)+);
cout<<"result:"<<pcstr<<endl;
cout<<strlen(pcstr)<<endl;
memcpy(destStr,pcstr,strlen(pcstr));
free(pcstr);
break;
}
case libxl::CELLTYPE_EMPTY:
cout<<"true\n";
break;
}
}
cout<<"flag\n";
cout<<sheet->lastRow()<<endl;
cout<<sheet->lastCol()<<endl;
}
} int main()
{
char myy[]={};
while()
myDllFunc(myy);
}

随便对它的一些接口进行了测试,大家试试就知道用法了。下面是破解版的下载地址:http://pan.baidu.com/s/1sjHIAT3

最新文章

  1. 8天掌握EF的Code First开发系列之动手写第一个Code First应用
  2. Android Home键监听
  3. PHP性能监测的工具介绍 - XHProf
  4. printf 整数类型都用 uint8_t
  5. mysql常用单行函数
  6. 多行SQL语句拼成一条数据
  7. 从零开始学Python04作业源码:模拟ATM电子银行(仅供参考)
  8. C++异常处理的问题
  9. mysql 恢复备份
  10. 一:ZooKeeper简介
  11. javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
  12. 【转】Parallels Desktop 11.2.0 破解版 最佳Mac虚拟机软件
  13. Netty 5用户指南
  14. mysql数据库 数据类型
  15. [进程管理]linux 下 进程和线程的区别(baidu 面试)
  16. Oracle学习笔记之PL/SQL编程
  17. WPF基础篇之连接数据库
  18. 遇到npm报错read ECONNRESET怎么办
  19. Swift与JS的交互
  20. Linux巩固记录(2) java项目的编译和执行

热门文章

  1. Android中为你的应用程序添加桌面快捷方式
  2. App服务端架构变迁
  3. Vue Router 获取url路径参数 query
  4. [Java - 调用WebService]{http://schemas.microsoft.com/ws/2005/05/addressing/none}ActionNotSupported
  5. [Objective-C] - NSObject
  6. struts2 Action向JSP传值方式
  7. Drupal中的模块载入
  8. 【Spark】Spark的Standalone模式安装部署
  9. spoj 694 求一个字符串中不同子串的个数
  10. nginx 配置一个文件下载服务