编译xlnt开源库源码, 使用c++读写excel文件

news/2024/10/18 8:30:46/

编译xlnt开源库源码,在linux平台使用c++读写excel文件
下载xnlt源码
官方网站https://tfussell.gitbooks.io/xlnt/content/
下载地址https://github.com/tfussell/xlnt
下载libstudxml开源库源码
下载地址https://github.com/kamxgal/libstudxml

下载xnlt源码

官方网站https://tfussell.gitbooks.io/xlnt/content/

下载地址https://github.com/tfussell/xlnt
获取到xlnt-master.zip

下载libstudxml开源库源码
下载地址https://github.com/kamxgal/libstudxml
获取到libstudxml-master.zip

编译步骤

将libstudxml-master/libstudxml拷贝到xlnt-master/third-party/libstudxml

注意:是这个xlnt-master/third-party/libstudxml目录下,拷贝的结果是xlnt-master/third-party/libstudxml/libstudxml

4 在xlnt-master目录下创建build目录,创建命令:

mkdir build
5 在切换到build目录下,执行命令:

cd build
6 cmake -D STATIC=ON … (指定生成的为静态库)
7 cmake --build .
xlnt-master/build/source/libxlnt.a是生成的静态库,对应的头文件在xlnt-master/include/里面

注意: xlnt::workbook类的load(std::string path)在读取excel文件时,如果excel文件不存在直接抛出异常,程序退出。可能需要先用文件流先判断文件时候存在,demo如下,dest_filename为目标excel文件路径。

std::ifstream file_stream;
file_stream.open(dest_filename, std::ios::binary);
if (!file_stream.good())
{
std::clog << “ERROR ***************************************************” << std::endl;
return -1;
}
xlnt::workbook wb_read;
wb_read.load(“dest_filename”);
————————————————

    

3:cmake xlnt  ,命令如下

cd xlnt-master

mkdir build

cd build

二、构建、编译、运行

cmake -G “Visual Studio 12 2013 Win64” ..

cmake -G “Visual Studio 12 2013” ..

cmake ..

4.用vs打开xlnt-master\build\xlnt_all.sln,生成解决方案

5.在 xlnt-master\include中得到头文件,在xlnt-master\build\source\Debug中得到动态链接库

编译库文件

进入build文件夹,打开sln文件

选择模式Debug或者Release,点击运行。

输出显示到已生成dll文件,即生成完毕。

生成库的路径如下。


http://www.ppmy.cn/news/1470498.html

相关文章

深入探索Llama 2:下一代开源语言模型的革新与影响

Llama 2是Meta AI发布的一款先进的开源大模型&#xff0c;属于大型语言模型&#xff08;LLM&#xff09;类别。它是Transformer架构的一种变体&#xff0c;经过预先训练并在多种文本和代码数据集上进行微调&#xff0c;旨在提升功能和安全性。Llama 2的关键特点包括&#xff1a…

基于Django + Web + MySQL的智慧校园系统

基于Django Web MySQL的智慧校园系统 由于时间紧迫&#xff0c;好多功能没实现&#xff0c;只是个半吊子的后台管理系统&#xff0c;亮点是项目安全性还算完整&#xff0c;权限保护加密功能检索功能有实现&#xff0c;可参考修改 功能如下&#xff08;服务为超链接&#xff0…

通过延时开关控制组件create()响应刷新列表

通过延时开关控制组件create()响应刷新列表 <policyInforv-if"policyInforShow":policyNo"policyNo"></policyInfor>methods: { change(){ this.policyInforShowfalse; setTimeout(()>{ this.policyInforShowtrue; },300) }, }, functionA…

PyQt5中建立二级窗口

用qtdesigner创建两个窗口&#xff0c;在主窗口里面放置一个按钮&#xff0c;用pyuic解析为py文件。 主窗口文件名one.py&#xff0c;二级窗口文件名main_window_v1.py。 import sys import one import main_window_v1 from PyQt5.QtWidgets import *class SecondWindow(QMa…

【单元测试】测试用例编写

在你想要了解如何编写单元测试的时候&#xff0c;想必对于单元测试的概念和重要性都已经有了比较充足的了解。 本篇不讲概念、不说废话&#xff0c;仅展示一些单元测试编写的技巧和方法&#xff0c;希望能够帮助大家实际用起来。 计划做一个单元测试的专栏&#xff0c;后续补充…

CentOS 7.9检测硬盘坏区、实物定位(三)

系列文章目录 CentOS 7.9上创建JBOD&#xff08;一&#xff09; CentOS 7.9上创建的JBOD阵列恢复&#xff08;二&#xff09; 文章目录 系列文章目录前言一、在系统中找到硬盘对应的盘符二、使用命令定位实物1.badblocks检测坏块2.对2T以上的硬盘检测&#xff08;对本篇非必要…

哪些医疗器械需要注意网络安全问题?医疗器械网络安全测试方法有哪些?

随着医疗设备的网络化程度不断提高&#xff0c;网络安全问题变得越来越突出。以下是一些需要特别注意网络安全的医疗器械类别&#xff1a;1. 医学影像类设备&#xff1a;包括CT、DR、医用X射线系统、超声诊断仪、磁共振设备、肿瘤治疗机、医用胶片及处理系统、医用3D打印设备等…

Linux 软链接

# 语法 ln -s <文件夹or文件的真实路径> <自定义路径别名> # 例子 ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ~/ens33