(超级新手自己弄的xLnt库配置方法(也算自己备忘))

准备工作

1、下载cmake,请下载64位版本链接:link
2、下载xlnt库,链接:link
3、安装cmake,选择默认安装即可。

本人使用的是vs2017,请到微软官网自行下载需要的版本
接下来编译库工作
1、将下载的xlnt库压缩包解压到硬盘,我这里是解压到了D盘下,xlnt-master文件夹内

2、打开安装好的cmake,按照图片上的数字顺序操作,步骤1是选择xlnt-master库的位置,步骤2是选择编译后的存放位置

步骤3选择自己电脑上安装的VS版本,请选择win64,选择好之后请点击步骤4,最后点击步骤5打开VS,直接点击本地调试等待VS编译完成,编译完成之后会显示成功生成5个,弹出的错误提示不用理会。

至此我们的准备工作基本上完成了,接下来开始给项目配置xlnt库

1、打开VS新建一个空项目

2、对项目点击右键打开菜单选择属性

3、要配置两个地方,但在配置前请将VS本地调试选择X64,否则项目会出错
第一步是VC++目录下的包含目录,添加一个 ( S o l u t i o n D i r ) 然 后 确 定 , 这 个 语 句 的 意 义 是 添 加 项 目 解 决 方 案 文 件 夹 下 的 包 含 的 头 文 件 注 : 该 处 图 片 无 法 显 示 第 二 步 则 是 在 链 接 器 选 项 下 的 输 入 这 里 加 入 这 句 话 (SolutionDir)然后确定,这个语句的意义是添加项目解决方案文件夹下的包含的头文件 注:该处图片无法显示 第二步则是在链接器选项下的输入这里加入这句话 (SolutionDir)然后确定,这个语句的意义是添加项目解决方案文件夹下的包含的头文件注:该处图片无法显示第二步则是在链接器选项下的输入这里加入这句话(SolutionDir)lib\xlntd.lib将项目解决方案中的lib文件夹下的xlntd.lib库添加到项目中去

第三步就是将刚才解压的xlnt库的头文件复制到我们新建的项目根目录下,我解压出来的头文件路径是D:\Code\CppCode\xlnt-master\include,xlnt文件夹即是我们需要的头文件文件夹

第四步在项目根目录下新建一个lib文件夹,将cmake编译好的xlnt库文件夹打开,找到xlntd.lib文件,我电脑上的路径如下,将该文件复制到项目根目录下的lib文件夹

第五步将xlntd.lib同一个文件夹下的xlntd.dll复制到项目的文件夹内,我的电脑上路径是

所有准备工作完成,现在可以开始编码测试

下面用xlnt官网上的一个示例来测试

#include <iostream>
#include <vector>
#include <string>
#include "xlnt/xlnt.hpp"int main()
{//Creating a 2 dimensional vector which we will write values tostd::vector< std::vector<std::string> > wholeWorksheet;//Looping through each row (100 rows as per the second argument in the for loop)for (int outer = 0; outer < 100; outer++){//Creating a fresh vector for a fresh rowstd::vector<std::string> singleRow;//Looping through each of the columns (100 as per the second argument in the for loop) in this particular rowfor (int inner = 0; inner < 100; inner++){//Adding a single value in each cell of the row std::string val = std::to_string(inner + 1);singleRow.push_back(val);}//Adding the single row to the 2 dimensional vectorwholeWorksheet.push_back(singleRow);std::clog << "Writing to row " << outer << " in the vector " << std::endl;}//Writing to the spread sheet//Creating the output workbook std::clog << "Creating workbook" << std::endl;xlnt::workbook wbOut;//Setting the destination output file namestd::string dest_filename = "output.xlsx";//Creating the output worksheetxlnt::worksheet wsOut = wbOut.active_sheet();//Giving the output worksheet a title/namewsOut.title("data");//We will now be looping through the 2 dimensional vector which we created above//In this case we have two iterators one for the outer loop (row) and one for the inner loop (column)std::clog << "Looping through vector and writing to spread sheet" << std::endl;for (int fOut = 0; fOut < wholeWorksheet.size(); fOut++){std::clog << "Row" << fOut << std::endl;for (int fIn = 0; fIn < wholeWorksheet.at(fOut).size(); fIn++){//Take notice of the difference between accessing the vector and accessing the work sheet//As you may already know Excel spread sheets start at row 1 and column 1 (not row 0 and column 0 like you would expect from a C++ vector) //In short the xlnt cell reference starts at column 1 row 1 (hence the + 1s below) and the vector reference starts at row 0 and column 0wsOut.cell(xlnt::cell_reference(fIn + 1, fOut + 1)).value(wholeWorksheet.at(fOut).at(fIn));//Further clarification to avoid confusion//Cell reference arguments are (column number, row number); e.g. cell_reference(fIn + 1, fOut + 1)//Vector arguments are (row number, column number); e.g. wholeWorksheet.at(fOut).at(fIn)}}std::clog << "Finished writing spread sheet" << std::endl;wbOut.save(dest_filename);return 0;
}

编译成功通过并执行,打开项目目录,发现输出的excel文件
打开之后如下图

至此结束

因本人也是新手因工作需要原因不得不学习编程来处理excel数据提高工作效率,为什么要选择C++纯属个人爱好,我一直认为C++是很强的语言。本来按理来说处理excel其他语言,如C#,java,VB更容易上手,操作起来更方便,但是个人就是偏爱C++。这篇文章作备忘用,我会继续学习慢慢提高之后,一点一点的分享我的学习历程。

超级新手自己弄的xLnt库配置方法相关推荐

  1. Solidworks GB型材库配置方法以及配置文件

    Solidworks GB型材库配置方法以及配置文件 GB型材库 主要用于SolidWorks 焊件中生成结构件特征是调用. 配置GB型材库,默认是ISO和ansi标准的型材. 单独配置GB型材方法 ...

  2. mysql主从库配置方法

    2019独角兽企业重金招聘Python工程师标准>>> 一.mysql主从备份(复制)的基本原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务 ...

  3. 这一次彻底弄明白Gradle相关配置

    这一次彻底弄明白Gradle相关配置 鸿洋 鸿洋 微信号 hongyangAndroid 功能介绍 你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识.点击历史消息,查看所有已推送 ...

  4. 【C++】使用VS2022和GCC编译Xlnt库读取EXCEL

    目的 因为有需求需要在PC上读取Excel文件,而且得要用C++来实现,故在Github上寻找了下好使的库,于是乎找到了Xlnt库 https://github.com/tfussell/xlnt 我 ...

  5. STM32F4系列HAL库配置定时器实验——输入捕获

    STM32F4系列HAL库配置定时器实验--输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率.我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数 ...

  6. 记录一下vlfeat视觉库配置

    vlfeat视觉库有两种配置方式,就像opencv一样,可以直接下载使用,也可以源码编译,下面记录一下直接下载并配置的方式 vlfeat库的GitHub地址: GitHub - vlfeat/vlfe ...

  7. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )

    文章目录 一.FFMPEG 源码下载 解压 二.交叉编译工具 三.configure 脚本及帮助命令 四.配置 configure 脚本 五.输出目录配置 六.函数库配置 七.程序配置选项 八.组件配 ...

  8. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  9. Oracle 11g Dataguard 物理备库配置(一)之Duplicate配置

    Oracle 11g Dataguard Duplicate物理备库配置(一)之物理备库创建配置 # ver:1.5 第五次修改 # modify: 2013.8.16 # author: koumm ...

最新文章

  1. 操作系统设计与实现第3版笔记与minix3心得(1)-minix3简介
  2. 【Linux】一步一步学Linux——make命令(259)
  3. 【已解决】Error: could not open `C:\Program Files\Java\jre1.8.0_121\lib\amd64\jvm.cfg‘
  4. 流式计算的代表:Storm、Flink、Spark Streaming
  5. 职场 | 工作五年之后,对技术和业务的思考
  6. 从源头入手,一分钟秒懂为什么要搞微服务架构?(转)
  7. llnmp 环境一键部署 2种安装方法
  8. oracle根据当前月份往前,Oracle SQL - 根据月份对时间序列分区求和
  9. treeview的checkbox展开节点
  10. C#通过Aforge调用电脑摄像头(附代码)
  11. 惠普服务器显示器接口类型,介绍:目前显示器主要接口
  12. 使用MinMaxScaler 中scaler.inverse_transform不能返回原来数据的原因
  13. Batch Normalization详解(原理+实验分析)
  14. [python]pycharm自动生成函数注释
  15. 010. 递增子序列
  16. freemarker数字显示问题(超过1000会加逗号分隔)
  17. 前端面试常见面试题及答案
  18. 2021面试第二弹来袭
  19. 如何向icloud上传文件_如何将苹果手机iCloud网盘中的文件分享给好友?
  20. MP3 Tag id3(MP3标签 id3)

热门文章

  1. 硬盘容量越大 计算机整体性能越好,是不是硬盘空间越大,内存越高,电脑性能就越好?...
  2. 软件工程导论第二篇学习心得
  3. JS中函数式编程详解版(FunctionalProgramming,FP)
  4. 如何在线进行PDF文档的压缩?
  5. 11203 RAC(asm)恢复一例
  6. 京东年货节,如何一键生成全店手机详情?
  7. 安卓手机如何投屏到电视上_关于安卓手机投屏电视问题的一个迂回解决方案
  8. 努比亚能不能用鸿蒙系统,余承东快看,中兴对是否使用华为鸿蒙表态了
  9. .Net Redis 入门到熟练
  10. openlayers3使用已有的ArcGIS切片