C++读写Excel(xlnt库的使用)

xlnt库 @[TOC]C++操作表格xlnt库简介 xlnt库简介 xlnt是一个开源库,背景介绍请移步github:[link](https://github.com/tfussell/xlnt) ; 使用xlnt库可以便捷的对xlsx格式的表格进行创建、读写等操作,在使用C++实现的数据科学项目中,可以用来方便地将实验结果记录成表格。 安装 从源码安装(win10+cmake+VS2017) a. 使... 阅读详情
AI摘要

xlnt是一个现代C++库,专为在内存中处理电子表格并支持XLSX文件的读写而设计。它提供API来生成、读取Excel文件,包括高级功能如公式、合并单元格和设置属性。版本1.0起,重点在于提升兼容性和性能,鼓励开发者参与贡献。

一、简介

官网:https://github.com/tfussell/xlnt
Cross-platform user-friendly xlsx library for C++11+

xlnt is a modern C++ library for manipulating spreadsheets in memory and reading/writing them from/to XLSX files as described in ECMA 376 4th edition. The first public release of xlnt version 1.0 was on May 10th, 2017. Current work is focused on increasing compatibility, improving performance, and brainstorming future development goals. For a high-level summary of what you can do with this library, see the feature list. Contributions are welcome in the form of pull requests or discussions on the repository’s Issues page.

xlnt 是一个现代 C++ 库,用于在内存中操作电子表格,并按照 ECMA 376 第 4 版中的描述,从 XLSX 文件中读取/写入电子表格。xlnt 1.0 版本于 2017 年 5 月 10 日首次公开发布。目前的工作重点是增强兼容性、提高性能,以及集思广益制定未来的开发目标。

二、基本用法

1. 生成excel

#include <xlnt/xlnt.hpp>

int main()
{
    xlnt::workbook wb;
    xlnt::worksheet ws = wb.active_sheet();
    ws.cell("A1").value(5);				// 写入数值
    ws.cell("B2").value("string data");	// 写入字符串
    ws.cell("C3").formula("=RAND()");	// 写入公式
    ws.merge_cells("C3:C4");			// 合并C3:C4单元格
    ws.freeze_panes("B2");				// 冻结B2
    wb.save("example.xlsx");
    return 0;
}

2. 读取指定表单

xlnt::workbook wb;
wb.load("example.xlsx"); // 加载 Excel 文件

// 通过名称获取指定的工作表
xlnt::worksheet ws = wb.sheet_by_title("Sheet1");
// xlnt::worksheet ws = wb.sheet_by_title(u8"中文");

// 也可以通过索引获取指定的工作表,索引从 0 开始
// xlnt::worksheet ws = wb.sheet_by_index(0);
// xlnt::worksheet ws = wb.sheet_by_id(0);


std::cout << "正在读取工作表: " << ws.title() << std::endl;

3. 读取指定单元格

// 读取 A1 单元格的值
auto cell_value = ws.cell("A1").value();
auto cell_value = ws.cell(xlnt::cell_reference(1, 1)).value();
auto cell_value = ws.cell(1, 1).value();

4. 获取行数或列数

// 获取所有行
auto rows = ws.rows();
// 计算行数
std::size_t row_count = std::distance(rows.begin(), rows.end());

// 获取所有列
auto columns = ws.columns();
// 计算行数
std::size_t row_count = std::distance(columns.begin(), columns.end());

5. 读取指定范围

#include <xlnt/xlnt.hpp>
#include <iostream>
#include <vector>

int main() {
    xlnt::workbook wb;
    wb.load("example.xlsx"); // 加载 Excel 文件

    auto ws = wb.active_sheet();

    std::vector<std::string> row_data;

    // 读取第1行的数据
    for (const auto& cell : ws.range("1:1")) {
        row_data.push_back(cell.to_string());
    }

    // 打印第1行的数据
    for (const auto& data : row_data) {
        std::cout << data << " ";
    }
	
	// 打印所有行
	for (auto row : ws.rows(true)) { // or false, see above
    	for (auto cell : row) { // no need for reference, cell/row are just wrappers around pointers
        // the following are three different ways to print the content of the cell
        	std::cout << cell.value<std::string>() << std::endl; // write the text content of the cell
        	std::cout << cell.value<double>() << std::endl; // write the number content of the cell
        	std::cout << cell.to_string() << std::endl; // convert to a string according to number formatting
    	}
	}
    return 0;
}

6. 设置属性

// 设置表单名称
ws.title("test");

// 设置单元格文本的属性
ws.cell("A1").font(xlnt::font().color(xlnt::color::red()));
ws.cell("A1").font(xlnt::font().name("SimSun"));
ws.cell("A1").font(xlnt::font().bold(true));
ws.cell("A1").font(xlnt::font().size(13));

// 同时设置单元格的多个属性
ws.cell("A1").font(xlnt::font()
	.color(xlnt::color::green())
	.name("SimSun")
	.bold(true)
	.size(20));

// 设置单元格的背景颜色为绿色
ws.cell("A1").fill(xlnt::fill::solid(xlnt::color::green()));
ws.cell("A2").fill(xlnt::fill::solid(xlnt::rgb_color(0, 255, 0)));

// 设置行高
ws.row_properties(1).custom_height = true;	// 必须设置为true才能设置行高
ws.row_properties(1).height = 30;			// 设置第1行高度为30 
// 设置列宽
ws.column_properties(1).width = 20; 		// 设置第1列宽度为20

// 设置对齐方式
cell.alignment(xlnt::alignment().horizontal(xlnt::horizontal_alignment::center));
cell.alignment(xlnt::alignment().vertical(xlnt::vertical_alignment::top));


// 合并C3:C4单元格
ws.merge_cells("C3:C4");

7. 添加超链接

// 设置单元格文本
ws.cell("A1").value(u8"点击打开百度");
// 创建一个超链接
ws.cell("A1").hyperlink("https://www.baidu.com/");

三、进阶用法

1. xlsx表格与xlnt库对象关系

xlsx对象xlnt对象说明
表格文件xlnt::workbook
表单xlnt::worksheet表单的标题在最下面
行rowrow_t从1开始
列columncolumn_t从A开始
单元cellxlnt::cell包含内容和字体等属性

四、注意事项

尽量对xlnt生成的excel文件进行修改,而不是其他软件生成的excel文件,否则程序可能会崩溃!
如果必须使用其他软件生成excel中的数据,可将数据粘贴到xlnt生成的excel文件中,再进行操作。

中文显示必须使用UTF-8字符串,其中

std::string utf8_str = u8"你好, world!"; 	// C++20以下 UTF-8 字符串的表示 
std::u8string utf8_str = u8"你好, world!";  // C++20及以上 UTF-8 字符串的表示 

https://www.cpp-prog.com/编程/xlnt/
VS2022编译xlnt库

vs2015编译Xlnt库操作excel表格 vs2015编译Xlnt库操作excel表格 xlnt是c++编写的开源excel操作工具,支持c++14标准。可以方便的通过代码的方式操作excel表格。支持sheet的读写和编辑,单元格操作支持写入和读取字符串或者数值类型。单元格样式设置等。可用于读取Excel中的单元格数据或者将数据写入单元格并保存到excel文件中。通过参考github项目主页上的Example我们可以使用Xlnt来进行e... 阅读详情

相关推荐

超级新手自己弄的xLnt库配置方法

(超级新手自己弄的xLnt库配置方法(也算自己备忘)) 准备工作 1、下载cmake,请下载64位版本链接:link 2、下载xlnt库,链接:link 3、安装cmake,选择默认安装即可。 本人使用的是vs2017,请到微软官网自行下载需要的版本 接下来编译库工作 1、将下载的xlnt库压缩包解压到硬盘,我这里是解压到了D盘下,xlnt-master文件夹内 2、打开安装好的cmake,按照...

weixin_42346244的博客 7659

探索xlnt:C++库的力量,让Excel处理更高效

是一个现代、高效且易于使用的C++库,专为创建、读取和修改Microsoft Excel XLSX文件而设计。这个项目提供了丰富的API,可以方便地在你的C++应用中处理Excel数据,而无需依赖COM接口或外部程序。 ## 技术分析 **1. 现代C++** xlnt利用了C++11和更高版本的标准特性,如模板元编程、智能指针和范围基础循环,这使得代码既简洁又易于理解,同时也保证了内存安全...

gitblog_00021的博客 2082

告别OLE和COM!在VS2015上用xlnt库读写Excel,这份保姆级配置指南帮你避坑

本文详细介绍了在VS2015环境下使用xlnt库替代传统OLE/COM方案进行Excel文件读写的高效实践。通过保姆级配置指南和实战代码示例,帮助开发者快速掌握这一轻量级开源工具,解决兼容性、性能和开发效率问题,特别适合C++开发者处理大规模Excel数据。

weixin_30825199的博客 237

xlnt库详细使用说明及方法

官网地址功能特点:xlnt提供API来生成、读取Excel文件,包括高级功能如公式、合并单元格和设置属性。它支持跨平台编译,包括Windows、UNIX(如Linux)、Mac等操作系统,还支持跨平台交叉编译,适用于Arm、PowerPC等嵌入式平台。

学无止尽,谨言慎行! 4435

C++数据处理实战:用xlnt库将Excel表格轻松读入STL容器(附VS2015工程)

本文详细介绍了如何在Visual Studio 2015环境下使用xlnt库实现Excel表格与STL容器的双向数据转换。通过配置xlnt库、读取Excel数据到vector容器以及将STL容器数据写入Excel的实战代码示例,帮助C++开发者高效处理Excel数据,提升开发效率。

weixin_30855099的博客 174

xlnt库,VS2022用于读取excel

xlnt库,VS2022用于读取excel

C++ 读写 Excel 在 vs2015 中实现(利用开源库xlnt)

参考: C++读写EXCEL文件方式比较,当然,读写csv也是可以的 开源项目QtXlsxWriter,用的是qmake,而不是cmake,不太熟悉 开源项目OpenXLSX OpenXLSX读写教程

东风小火的博客 1万+

xlnt是开源的内存中读、写xlsx文件的C++库 本资料使用VC2022下编译读写excel库的教程

xlnt 是一个 C ++ 库,用于处理电子表格excel,允许VC++从 XLSX 文件读取 / 写入。支持多平台编译,支持Windows、UNIX(如Linux)、Mac等操作系统。也可跨平台交叉编译,用于给Arm、PowerPC等嵌入式平台使用。 本文主要讲解其在win11 x64系统下使用VS2022的编译方法,包含xlnt库及配置所需的第3方库的资源,在Win11 x64,VS2022下编译。 需要注意的是,在VS2022中需要安装C++ Cmake工具组件。

C++读写excel小工具:xlnt调用例子

此工具编译出来的是64位工具,所有只能64位程序调用,文件路径尽量不用中文,只能windows使用。二、读写excel文件。

liaofeng09的博客 554

xlnt一个用于读写Microsoft Excel 2007及更高版本(XLSX格式)文件的C++库,本次资源windows下的

xlnt是一个用于读写Microsoft Excel 2007及更高版本(XLSX格式)文件的C++库。它提供了创建、读取和写入Excel工作表的功能,包括单元格、行和列的格式设置以及数据验证和保护等功能。xlnt库支持多平台,包括Windows、Linux和MacOSX等操作系统。xlnt库可以直接在C/C++应用程序中使用,也可以通过插件和脚本语言(如Python)进行访问。xlnt支持多种数据类型的读写,包括字符串、数字、日期、公式和布尔值等。此外,xlnt还支持Unicode字符和国际化,支持多语言和字符集。xlnt库还提供了许多高级功能,如动态图表、条件格式、图像、超链接、批注和格式化等。此外,它还支持加密和压缩,以保护工作表的安全性和可靠性。总而言之,xlnt库是一个强大而灵活的C++库,提供了创建和操作Excel文件的完整功能,是开发者创建高质量Excel文件的理想选择。

C++第三方库xlnt-用于读写Excel文件

C++第三方库xlnt-用于读写Excel文件

【亲测免费】 探索数据之美:xlnt C++库,高效处理Excel XLSX文件的理想工具

探索数据之美:xlnt C++库,高效处理Excel XLSX文件的理想工具 【下载地址】xlntC库-用于读写MicrosoftExcel2007及更高版本XLSX格式文件的资源文件 xlnt是一个用于读写Microsoft Excel 2007及更高版本(XLSX格式)文件的C++库。它提供了创建、读取和写入Exce...

gitblog_09733的博客 1064

Zemax操作16--激光谐振腔(含晶体)

谐振腔(含晶体)

lzy750750的博客 8311

xlnt-通过编译完整记录资源分享

xlnt-通过编译完整记录资源分享 去发现同类优质开源项目:https://gitcode.com/ 本文档包含了一个关于C++操作Excel的库——xlnt的使用和编译记录。xlnt是一个非常实用的C++库,用于读取和写入Excel文件,经过一段时间的尝试与调试,我终于成功将其应用于我的项目中。现在,我将这个库以及从配置cmake到生成xls文件的完整过程记录分享给大家。 内容概述 从cmak...

gitblog_06701的博客 309

制作你自己的yolov5数据集并进行训练

项目地址:make-your-yolov5_dataset 一、数据集标注软件 labelImg labelMe 精灵标注助手 更多的标注工具你可以去看:深度学习图像标注工具汇总 、 十个最常用深度学习图像/视频数据标注工具 、 百度一下 在这里我选择使用labelImg 二、数据集标注 下载labelImg 解压,直接打开labelimg.exe labelImg标注数据 标注完成后即可获得VOC格式(生成.xml文件)的数据 目录结构: dataset │ ├─Annotations .

年少的勇气已经用完,剩下的就是三思而后行 1万+

ROS2 - 乐动激光雷达 LD06

STL-06P 主要由激光测距核心,无线传电单元,无线通讯单元,角度测量单元、电机驱动单元和机械外壳组成。STL-06P 测距核心采用 DTOF 技术,可进行每秒 5000 次的测距。每次测距时,雷达发射出红外激光,激光遇到目标物体后被反射到单光子接收单元。

机器人控制与仿真应用 3482

xlnt C++库 - 用于读写Microsoft Excel 2007及更高版本(XLSX格式)文件的资源文件

xlnt C++库 - 用于读写Microsoft Excel 2007及更高版本(XLSX格式)文件的资源文件 【下载地址】xlntC库-用于读写MicrosoftExcel2007及更高版本XLSX格式文件的资源文件 xlnt是一个用于读写Microsoft Excel 2007及更高版本(XLSX格式)文件的C++...

gitblog_09735的博客 1118

借助AI搞定国社科“研究内容”部分!用Gemini 3 Pro轻松撰写6大模块,让基金本子效率质量更上一层楼

所谓研究整体框架,是对课题研究逻辑结构与技术路径的系统阐述,其核心在于通过研究目标分解、研究内容模块化与研究方法整合,构建一个层次清晰、逻辑严密、科学可行的研究体系。撰写要求:1)分要点、分层次列出主要研究内容,保持各部分之间的逻辑性、层次性与系统性;研究可行性可理解为开展本课题在理论基础、研究方法、研究条件、人员结构、平台支撑及外部协作等方面的可实施程度,可从内部条件与外部条件两个维度进行系统论证。研究背景为:我正在申报xxx年xxx(项目名称),课题名称为:xxx,拟采用的主要研究方法包括:xxx等;

智能AI让学术科研更容易 964

【亲测免费】 Excel解析库——xlnt(包含Debug和Release版本,32位和64位)

Excel解析库——xlnt(包含Debug和Release版本,32位和64位) 【下载地址】Excel解析库xlnt包含Debug和Release版本32位和64位 本仓库提供了一个手动用CMake编译的xlnt库,适用于Windows平台的32位和64位系统。xlnt是一个用于读写Excel文件的C++库,支持.x...

gitblog_09780的博客 1289

【系统架构设计师-2023年真题】综合知识-答案及详解

要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是(

数据知道的博客 1万+

【PostgreSQL教程】PostgreSQL 高级篇之子查询

子查询也可称为内部查询、嵌套查询,指的是在 PostgreSQL 查询中的 WHERE 子句中嵌入查询语句。一个 SELECT 语句的查询结果能够作为另一个语句的输入值。子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,并可使用运算符如 =、、>=、

No8g攻城狮的博客 1205

告别OLE与CSV:在Visual Studio 2015中利用xlnt实现现代C++ Excel高效读写

本文详细介绍了在Visual Studio 2015中使用xlnt库实现现代C++高效读写Excel文件的方法。通过对比传统OLE和CSV方式的不足,展示了xlnt在性能、易用性和功能完整性上的优势,并提供了从环境配置到实战应用的完整指南,帮助开发者快速掌握Excel数据处理技巧。

weixin_30457551的博客 275

OpenDataLab 大模型训练数据集下载记录

大模型 训练数据集

u013558123的博客 3341

告别OLE和COM!在VS2015上用xlnt库读写Excel,这份避坑指南请收好

本文详细介绍了如何在VS2015环境下使用xlnt库替代传统的OLE/COM接口进行Excel文件读写。xlnt作为轻量级开源库,提供简洁的API设计和跨平台支持,特别适合需要保持VS2015环境的开发团队。文章包含环境配置、核心操作示例及性能优化建议,帮助开发者高效处理Excel数据。

weixin_30892763的博客 287

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2048

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OPC Client第10讲:实现主界面;获取初始界面传来的所有配置信息config【C++读写Excel:xlnx;ODBC;缓冲区】

声明:在头文件中,你通常会声明变量,这意味着你告诉编译器该变量的存在,但不分配内存空间。定义:在源文件中,当你声明并初始化一个变量时,你实际上是在定义它,即为它分配内存空间。开放数据库连接【=翻译官】因为我们这个暂时没确定用哪种数据库,所以使用的ODBC。它是一种由微软提出的标准数据库访问接口(API),目的是让应用程序能够以统一的方式访问各种不同的数据库系统,而不需要为每种数据库编写不同的代码。

weixin_54966200的博客 1084

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 常用编程开发工具快捷键汇总
下一篇: VS2022编译xlnt库
QQVQQ_
博客等级 码龄8年 2610粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值