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

早些时候老大给我的一个任务需要对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

libxl库的介绍,对Excel操作封装得很好的一个库,兼容2007版和多字节字符(最后有破解版下载)的更多相关文章

  1. 现代前端库开发指南系列(二):使用 webpack 构建一个库

    前言 在前文中,我说过本系列文章的受众是在现代前端体系下能够熟练编写业务代码的同学,因此本文在介绍 webpack 配置时,仅提及构建一个库所特有的配置,其余配置请参考 webpack 官方文档. 输 ...

  2. {MySQL的库、表的详细操作}一 库操作 二 表操作 三 行操作

    MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...

  3. day 36 MySQL的库、表的详细操作

    MySQL的库.表的详细操作   MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset u ...

  4. VFP控制Excel操作集

    ◆访问EXCEL:ExcelSheet = GetObject('','Excel.Sheet')返回结果为类,则成功.例:ExcelSheet = GetObject('','Excel.Sheet ...

  5. 【Linux】 Ncures库的介绍与安装

    Ncures库的介绍 ncurses(new curses)是一套编程库,它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面. ncurses名字中的n意味着“new”,因为它是curse ...

  6. MySQL的库、表的详细操作

    目录 MySQL的库.表的详细操作 一 库操作 二 表操作 MySQL的库.表的详细操作 本节目录 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset ...

  7. fastText一个库用于词表示的高效学习和句子分类

    fastText fastText 是 Facebook 开发的一个用于高效学习单词呈现以及语句分类的开源库. 要求 fastText 使用 C++11 特性,因此需要一个对 C++11 支持良好的编 ...

  8. sql 从一个库中取某个表的数据导入到另一个库中相同结构的表中

    sql 2008 从一个库中把 某个表中的数据导入到另一个库中的具有相同结构的表中 use 库1 go insert into  库1.dbo.表1  select * from  库2.dbo.表1 ...

  9. STC8H开发(四): FwLib_STC8 封装库的介绍和注意事项

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

随机推荐

  1. 与Xamarin.Forms跨平台的用户界面

    Xamarin.Forms 与Xamarin.Forms跨平台的用户界面 Xamarin的. 形式是一个跨平台的UI工具包,它允许开发人员 轻松地创建本地用户界面布局,可以共享 在Android,iO ...

  2. 使用JTextArea示例

    相对于JLabel显示提示文字,JTextArea有一个先天优势:文字可以拷贝出来.经过下面设置它也能在外观上和JLabel一致. 代码如下: JTextArea txtArea=new JTextA ...

  3. vue - src(assets和static)

    描述:这里存放一些本地资源(images.css.js). assets:开发服务器(dev Server时引用的临时路径) static:静态资源存放(build Server).

  4. MSSQL数据库迁移到Oracle(二)

    上一篇文章采用的PowerDesigner实现对MSSQL数据库迁移到Oracle,后来博友建议用ESF Database Migration Toolkit进行迁移会更加简单方便,本文就是通过一个实 ...

  5. 课程分享 企业普及版贝斯OA与工作流系统

    企业普及版贝斯OA与工作流系统 基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证企业普及版贝斯OA与工作流系统 假设对这个课程有兴趣的.能够和我联系.QQ205 ...

  6. 数学之路-分布式计算-linux/unix技术基础(4)

    pwd显示当前文件夹,ls查看文件夹下的文件,cd 进入文件夹 -bash-4.2$ pwd /home/myhaspl-bash-4.2$ lsabc        hadoop-2.4.1     ...

  7. 【Linux】xshell连接中断后就无法连接虚拟机中的Linux

    具体情景是这样的: 在使用Linux的时候,本来一直好好的,突然就断了,我去百度了一番,网上的说法有千万种 有的说:是由于防火墙的问题 有的说:是由于Linux与其他ip冲突造成 ... 说法千万种, ...

  8. 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean

    1. 导读 Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写tes ...

  9. mysql处理大数据合并的另一种方法

    在做项目的时候我碰到了一个这样的场景,有两张表,数据都在300W左右,现在要求在生产环境中合并这两张表为一张表,本来想用sql语句insert into select来实现,后来发现这样操作速度很慢, ...

  10. C语言-二进制技巧

    打开位: flags = flags | MASK 要打开的位为 1 关闭位: flags = flags & ~MASK 要关闭的位为 1 转置位: flags = flags ^ MASK ...