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

UE5网络模块实战:属性复制、RPC与联机开发踩坑指南

多人联机开发中,网络同步是核心难题。UE5网络模块以服务器权威为基础,通过Actor复制、RPC和所有权机制实现多端状态一致。理解属性复制与OnRep回调、区分Server/Client/Multicast RPC的适用场景,是构建稳定联机架构的关键。本文结合数字孪生与多端协作场景,探讨如何将渲染与逻辑分离,并针对打包后网络失效、端口防火墙、崩溃排查等工程实践问题给出解决方案。通过蓝图接口解耦表现层,利用C++创建StaticMesh组件实现服务器逻辑与客户端表现分离,同时注意专用服务器不加载渲染依赖(如D

weixin_29010003的博客 269

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

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

gitblog_06701的博客 309

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

ThunderScope开源示波器

4CH,1GSa/S 开源示波器。前端很简洁,BUF802+LMH6518,ADC是HMCAD1511,用Xilinx A7 FPGA进行控制,数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网,强。设计日志:https://hackaday.io/project/180090-thunderscope开源地址:https://github.com/EEVengers/ThunderScope。

leida_wt的博客 8185

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

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

gitblog_09735的博客 1118

【SAM2系列】windows单GPU复现时的bug解决记录

windows运行sam2,就感觉在开一艘破破烂烂的船,每走一步报一个错,bug源源不断的冒出来😭😭😭😭😭。

weixin_43571113的博客 1317

【亲测免费】 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

手把手教你学Simulink--进阶电机控制场景实例:基于Simulink的直流电机双闭环调速系统抗负载扰动仿真

摘要:本文基于Simulink平台构建直流电机双闭环调速系统,重点研究其在工业传送带场景下的抗负载扰动性能。系统采用转速外环(稳速)和电流内环(限流)的嵌套结构,通过工程法整定PI参数,实现了转速跌落<10%、恢复时间<0.5s的优异抗扰性能。仿真结果表明,相比单闭环系统,双闭环控制使转速跌落率降低47%,恢复时间缩短75%。文中详细介绍了数学模型建立、Simulink模块实现及参数优化方法,并提供了完整代码和模型文件,为电机控制系统设计提供实用参考。

MHD0815的博客 179

CKA-题库-简洁参考答案-反复练习20遍-必过!!!

新版CKA考试已于2020年9月1日正式上线! 考试模式:线上考试 考试时间:2小时 认证有效期:3年 软件版本:Kubernetes v1.19 重考政策:可接受1次重考 经验水平:中級 题目数量:17题 题库量小:随机的题目重复率极高 考试时可打开两个浏览器Tab,一个是考试窗口,一个用来查阅官方文档](https://kubernetes.io/docs/) 01 Task - 英文 Create a new ClusterRole named deployment-clusterrole tha.

随笔记录-分享&记忆 7314

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

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

weixin_30457551的博客 275

WOFOST作物模型(1):PCSE环境配置

get_summary_output() 方法通常用于在 PCSE 模拟过程结束后,获取模拟结果的摘要信息,例如模拟期间的总产量、总水分需求等。它可以提供对模拟结果的快速总结,方便用户进行后续的分析和处理。用.get_output来获取过程参数,并将这些参数转为dataframe显示。用run_till_terminate()代表终止。安装好之后,打开jupyter notebook。也可以指定运行时间,并获取最后一天的参数。首先还是打开之前建好的gee虚拟环境。

所有专家都曾始于新手 681

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

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

weixin_30892763的博客 287

倍福控制第三方伺服走CSV模式--以汇川伺服为例

在使用TwinCAT软件控制标准CiA402协议的EtherCAT伺服时使用TwinCAT软件NC自带的运动控制指令控制伺服,此时伺服驱动器一般工作在CSP/CSV/CST模式。最常见伺服驱动器工作在CSP模式,轨迹规划运行在TwinCAT软件,位置环速度环电流环运行在伺服驱动器中。该模式下速度波动较大,需要极度平稳的速度需要采用CSV模式。本文讲述的是伺服驱动器工作在CSV模式,此时轨迹规划和位置环均运行在TwinCAT软件,速度环电流环运行在伺服驱动器中。为了简化文字描述,本文采用图文结合的方式介绍伺服

weixin_41883890的博客 4847

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

weixin_54966200的博客 1084

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值