C++读写数据,一般通过txt文件,但是随着数据量的增大,采集数据时运用excel表格的优势得以逐步体现。本文主要介绍一下运用第三方库libxl,对excel表格数据进行读写。分为三个部分,第一部分是Visual Studio2010环境配置,第二部分是读操作,第三部分是写操作。

一、环境配置

1、下载第三方库libxl,网址是http://www.libxl.com/download.html

2、文件包含readme.txt,根据自己的系统对环境进行配置,我的是64位,采取的是Microsoft Visual C++配置。

二、读操作

  1. #include <iostream>
  2. #include <conio.h>
  3. #include "libxl.h"
  4.  
  5. using namespace libxl;
  6.  
  7. int main()
  8. {
  9. Book* book = xlCreateBook();
  10. if(book)
  11. {
  12. if(book->load(L"..\\generate\\example.xls"))
  13. {
  14. Sheet* sheet = book->getSheet(0);
  15. if(sheet)
  16. {
  17. const wchar_t* s = sheet->readStr(2, 1);
  18. if(s) std::wcout << s << std::endl << std::endl;
  19.  
  20. std::cout << sheet->readNum(4, 1) << std::endl;
  21. std::cout << sheet->readNum(5, 1) << std::endl;
  22. const wchar_t* f = sheet->readFormula(6, 1);
  23. if(f) std::wcout << f << std::endl << std::endl;
  24.  
  25. int year, month, day;
  26. book->dateUnpack(sheet->readNum(8, 1), &year, &month, &day);
  27. std::cout << year << "-" << month << "-" << day << std::endl;
  28. }
  29. }
  30. else
  31. {
  32. std::cout << "At first run generate !" << std::endl;
  33. }
  34.  
  35. book->release();
  36. }
  37.  
  38. std::cout << "\nPress any key to exit...";
  39. _getch();
  40.  
  41. return 0;
  42. }

三、写操作

  1. #include <iostream>
  2. #include <windows.h>
  3. #include "libxl.h"
  4.  
  5. using namespace libxl;
  6.  
  7. int main()
  8. {
  9. Book* book = xlCreateBook();
  10. if(book)
  11. {
  12. Sheet* sheet = book->addSheet(L"Sheet1");
  13. if(sheet)
  14. {
  15. sheet->writeStr(2, 1, L"Hello, World !");
  16. sheet->writeNum(4, 1, 1000);
  17. sheet->writeNum(5, 1, 2000);
  18.  
  19. Font* font = book->addFont();
  20. font->setColor(COLOR_RED);
  21. font->setBold(true);
  22. Format* boldFormat = book->addFormat();
  23. boldFormat->setFont(font);
  24. sheet->writeFormula(6, 1, L"SUM(B5:B6)", boldFormat);
  25.  
  26. Format* dateFormat = book->addFormat();
  27. dateFormat->setNumFormat(NUMFORMAT_DATE);
  28. sheet->writeNum(8, 1, book->datePack(2008, 4, 29), dateFormat);
  29.  
  30. sheet->setCol(1, 1, 12);
  31. }
  32.  
  33. if(book->save(L"example.xls"))
  34. {
  35. ::ShellExecute(NULL, L"open", L"example.xls", NULL, NULL, SW_SHOW);
  36. }
  37. else
  38. {
  39. std::cout << book->errorMessage() << std::endl;
  40. }
  41.  
  42. book->release();
  43. }
  44.  
  45. return 0;
  46. }


Visual Studio 2010利用libxl读写excel表格数据的更多相关文章

  1. 【转】Visual Studio 2010在数据库生成随机测数据

    测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数 ...

  2. C++中利用libxl操作Excel表格

    libxl是一款操作excel的商业库,支持C.C++.C#和Delphi.下文利用libxl在C++中实现了从excel文档的表1中随机挑选记录,保存到新建的表中.以下为代码: #include & ...

  3. Python利用xlutils统计excel表格数据

    假设有像上这样一个表格,里面装满了各式各样的数据,现在要利用模板对它进行统计每个销售商的一些数据的总和.模板如下: 代码开始: 1 #!usr/bin/python3 2 # -*-coding=ut ...

  4. Visual Studio 2010如何利用宏

    最近在做后台代码的拆分,由于机器升级,原来装的添加注释的插件不能用了. 看来只有自己想办法了,看了下利用宏添加注释与把项目展开.折叠的方式: 参考了以下几个内容: 1.Visual Studio 20 ...

  5. [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)

    [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date  周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...

  6. [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发

    http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...

  7. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

    Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...

  8. Visual Studio 2010 中的 Web 开发

    概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用 ...

  9. 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序

    原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...

随机推荐

  1. 在Spring Boot框架下使用WebSocket实现聊天功能

    上一篇博客我们介绍了在Spring Boot框架下使用WebSocket实现消息推送,消息推送是一对多,服务器发消息发送给所有的浏览器,这次我们来看看如何使用WebSocket实现消息的一对一发送,模 ...

  2. Jedis分片Sentinel连接池实验

    Jedis分片Sentinel连接池实验 1.起因 众所周知,Redis官方HA工具Sentinel已经问世很久了,但令人费解的是,Jedis官方却迟迟没有更新它的连接池.到目前Maven库中最新的2 ...

  3. 用Netty解析Redis网络协议

    用Netty解析Redis网络协议 根据Redis官方文档的介绍,学习了一下Redis网络通信协议.然后偶然在GitHub上发现了个用Netty实现的Redis服务器,很有趣,于是就动手实现了一下! ...

  4. Mac 下安装运行Rocket.chat

    最近花了一周的时间,复习了HTML.CSS.原生JS,并学习了Node.js.CoffeeScript.js.MongoDB,入了下门. 因为准备在Rocket.chat 上做二次开发,所以先下载和安 ...

  5. Android 多窗口详解

    多窗口支持 Android N 添加了对同时显示多个应用窗口的支持. 在手持设备上,两个应用可以在"分屏"模式中左右并排或上下并排显示. 在电视设备上,应用可以使用"画中 ...

  6. FORM开发技术之动态控制某些item的属性

    利用FORM内置函数控制ITEM包括按钮,普通ITEM等等的属性,更多内置函数学习课参考我的博客FORM内置系统函数 http://blog.csdn.net/cai_xingyun/article/ ...

  7. [openresty]安装nginx_lua

    这种方式是直接安装openresty ,不是通过重新编译nginx Ubuntu 安装 安装依赖包 $ sudo apt-get install libreadline-dev libncurses5 ...

  8. [error]configure: error: You need a C++ compiler for C++ support.

    安装pcre包的时候提示缺少c++编译器 解决办法 使用yum安装 yum -y install gcc-c++ 本文出自 "orangleliu笔记本"博客,转载请务必保留此出处 ...

  9. Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式

    Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...

  10. Android 在 SElinux下 如何获得对一个内核节点的访问权限

    点击打开链接 Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问. 本文将以用户自定义的 ...