前言

在程序中读取excel文件比如XLS和XLSX,方法有很多,比如ADO,OLE,ODBC等方式。但是这些方法要么依赖于平台,要么读取速度慢,有的甚至需要电脑本身装有excel程序。
但是有一个付费的商业软件库Libxl,属于轻量化的读取工具,读取速度可以,且不依赖于平台,可在windows,mac,linux上使用。这个软件可以免费使用,但是一次加载限制操作300个单元,并且第一行不能进行读写。如果想打破限制,这里有pojie版。本文使用的就是这个版本。

测试源代码

实现功能:打开一个包含一个工作表的excel文件,在其中新建一张表。然后把原始表中的数据复制到新表中。

int main()
{Book* book = xlCreateXMLBook();book->setKey(L"Halil Kural", L"windows-2723210a07c4e90162b26966a8jcdboe");if (book->load(L"xlsx读取测试文件.xlsx")){book->addSheet(L"使用libxl库新建的表");Sheet * sheetread = book->getSheet(0);Sheet * sheetwrite = book->getSheet(1);if (sheetread){for (int i = 0; i < 15; i++){for (int j = 0; j < 5; j++){CellType celltype = sheetread->cellType(i, j);Format *format = sheetread->cellFormat(i, j);if (celltype == CELLTYPE_STRING){const wchar_t * t = sheetread->readStr(i, j);sheetwrite->writeStr(i+2, j+2, t, format);char *pcstr = (char *)malloc(sizeof(char)*(2 * wcslen(t) + 1));memset(pcstr, 0, 2 * wcslen(t) + 1);w2c(pcstr, t, 2 * wcslen(t) + 1);cout << pcstr << "\t\t";free(pcstr);}else if (celltype == CELLTYPE_NUMBER){double result = sheetread->readNum(i, j);sheetwrite->writeNum(i+2, j+2, result, format);cout << result << "\t\t";}else if (celltype == CELLTYPE_BLANK){cout << "\t\t" << endl;}else if (celltype == CELLTYPE_EMPTY){cout << "\t\t" << endl;}}cout << endl;}}//保存excelbook->save(L"xlsx读取测试文件.xlsx");book->release();}system("pause");return 0;
}

为了支持中文读取和显示,需要以下函数

//中文的内容读出来后要进行编码的转换,这个为转换函数:wchar_t to char
char *w2c(char *pcstr, const wchar_t *pwstr, size_t len)
{int nlength = wcslen(pwstr);//获取转换后的长度int nbytes = WideCharToMultiByte(0, 0, pwstr, nlength, NULL, 0, NULL, NULL);if (nbytes>len)   nbytes = len;// 通过以上得到的结果,转换unicode 字符为ascii 字符WideCharToMultiByte(0, 0, pwstr, nlength, pcstr, nbytes, NULL, NULL);return pcstr;
}

运行结果

原始excle表格:


运行过程cmd显示内容:


运行结束后新表内容,向下和向右各偏移2格。


源码和Libxl库pojie版下载地址

https://download.csdn.net/download/iamqianrenzhan/10536061

使用libxl库读取excel文件相关推荐

  1. 使用 c++ libxl库读取Excel

    使用c++ libxl库读取Excel 下载 下载地址:https://www.libxl.com/download.html 解压: 分别为动态库,头文件,静态库 VS配置: 使用 添加头文件 #i ...

  2. matlab显示服务器出现意外,Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决...

    1.问题描述: 该错误通常发生在应用函数读取excel文件(后缀xls或xlsx)时. 应用xlsread函数读取提示服务器出现意外情况: 应用importdata读取时提示can't open fi ...

  3. python读取excel文件,把指定行表红

    最近公司有个新的需求:上传一个excel文件,需要对文件进行检测,把错误的记录标红并且记录错误原因! 1.首先上传文件此时没有对文件内容进行检查. 2.保存,此时对文件内容进行检查,用pandas库读 ...

  4. python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    详解pandas库pd.read_excel操作读取excel文件参数整理与实例 来源:中文源码网    浏览: 次    日期:2019年11月5日 详解pandas库pd.read_excel操作 ...

  5. 【python】pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  6. python read_excel header_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  7. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  8. python pandas库读取excel/csv中指定行或列数据详解

    通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下 ...

  9. python读取excel部分值存入另一个excel-python3读取excel文件只提取某些行某些列的值方法...

    今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...

最新文章

  1. 自定义LayoutManager实现最美应用列表
  2. SAP WM中阶Storage Type的Capacity Check – Check based on palletization according to SUT 1
  3. [C#]解决生成的缩略图模糊的问题
  4. am335x 打开内部 RTC
  5. HTTP/2 学习笔记
  6. python华为认证_HCIA-AI华为认证AI工程师在线课程题目及参考答案
  7. leetcode中文版python,Python 版 LeetCode 刷题笔记 #7 整数反转
  8. VOC2007和COCOmAP计算
  9. jade 编译 html,学习前端模板引擎 jade (一)_html/css_WEB-ITnose
  10. QQ2005BIII网吧版修改方法(转)
  11. Adobe Photoshop CC2020【PS cc2020】安装方式及安装包下载
  12. 纯前端实现—用户注册登录界面
  13. 网页游戏打击感实施要点
  14. 【Nacos源码篇(五)】Subscriber源码分析
  15. 获取最近一年十二月份的月份
  16. 什么是JavaBeans
  17. jquery简单赋值取值
  18. 电子电路仿真设计与制版软件综述 - PCB, OrCAD, PADs
  19. [Unity实战]一个简单的unity手写摇杆[入门级][手写demo][开箱可用]
  20. Mac电脑装了微信小助手,微信闪退的解决办法

热门文章

  1. 入门到卸载:Anaconda3安装与Python3.8.1兼容配置
  2. 如何用C#制作 微信个人机器人
  3. 阿里云服务器(Windows)使用IE浏览器打开网站提示“增强安全配置正在阻止来自下列网站内容”如何处理?
  4. 2021美赛写作(一)
  5. linux环境下tomcat扩大内存
  6. 万年历的Java代码
  7. 谷歌云服务_Google Cloud_使用注意
  8. (补充)微信长按识别二维码 -- 页面多个二维码如何识别?(二)
  9. hikari配置断开重连_Spring boot 数据库连接断线重连问题
  10. tomcat安装配置.md