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

一、简介

官网: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");ws.freeze_panes("B2");wb.save("example.xlsx");return 0;
}

2. 读取指定表单

xlnt::workbook wb;
wb.load("example.xlsx"); // 加载 Excel 文件// 通过名称获取指定的工作表
xlnt::worksheet ws = wb.sheet("Sheet1");
// xlnt::worksheet ws = wb.sheet(u8"中文");// 也可以通过索引获取指定的工作表,索引从 0 开始
// xlnt::worksheet ws = wb.sheet(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 row_count = ws.rows();
// 获取列数
auto column_count = ws.columns();

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 << " ";}return 0;
}

三、进阶用法

1. 设置字体

// 创建一个字体对象并设置字体大小和样式
xlnt::font font;
font.size(12); // 设置字体大小为12
font.bold(true); // 设置为粗体
font.italic(true); // 设置为斜体
font.color(xlnt::color::red()); // 设置字体颜色为红色// 获取要设置字体的单元格
auto cell = ws.cell("A1");// 将字体对象应用于单元格
cell.font(font);

2. 设置填充色

// 创建一个填充对象并设置颜色
xlnt::fill fill;
fill.pattern_type(xlnt::pattern_fill_type::solid);
fill.foreground(xlnt::color::green());// 获取要设置背景色的单元格
auto cell = ws.cell("A1");// 将填充对象应用于单元格
cell.fill(fill);

3. 设置行高与列宽

// 设置行高
ws.row_properties(1).height = 30; // 第1行高度为30像素// 设置列宽
ws.column_properties(1).width = 20; // 第1列宽度为20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/723067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据结构]队列

1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头 2…

【Django】聚合查询——聚合和其他 QuerySet 子句(filter() 、 exclude()、order_by()、values())

当使用复杂的ORM方式查询时&#xff0c;如果有困惑&#xff0c;使用 str(queryset.query) 查看对应生成的SQL语句。 聚合和其他 QuerySet 子句 filter() 和 exclude() 聚合结果也可以使用过滤。任何应用于普通模型字段的 filter() &#xff08;或 exclude()&#xff09;对聚…

基于 HBase Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数&#xff08;可选&#xff09; 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新…

vite、mode如果为production打包后 .env.production 中 VITE_API_DOMAIN变量作为API地址吗

Vite 是一个现代化的前端构建工具&#xff0c;它使用 .env 文件来管理不同环境下的环境变量。通过为不同的环境&#xff08;如开发环境、生产环境等&#xff09;设置不同的 .env 文件&#xff0c;你可以控制这些环境中的变量&#xff0c;这些变量在构建时会被注入到项目中 当你…

382. K取方格数(图论,费用流,拆点,上下界可行流,网格图模型)

在一个 NN 的矩形网格中&#xff0c;每个格子里都写着一个非负整数。 可以从左上角到右下角安排 K 条路线&#xff0c;每一步只能往下或往右&#xff0c;沿途经过的格子中的整数会被取走。 若多条路线重复经过一个格子&#xff0c;只取一次。 求能取得的整数的和最大是多少。…

qsort函数实现

&#xff08;一篇学习代码&#xff09; 仿照qsort函数的功能&#xff0c;实现冒泡排序 #include<stdio.h> #include<string.h> //qsort函数实现 // //如果指针p1指向的值大于指针p2指向的值&#xff0c;则返回值大于0&#xff0c; // 相等&#xff0c;返回0&am…

mac电脑版MATLAB R2023b for Mac中文激活版

MATLAB R2023b for Mac&#xff1a;科学计算的终极工具 软件下载&#xff1a;MATLAB R2023b for Mac中文激活版下载 &#x1f52c; 探索科学&#xff0c;无限可能 MATLAB R2023b for Mac&#xff0c;助您深入挖掘科学计算的奥秘。从数据分析、算法设计到可视化展示&#xff0c;…

WPF依赖属性概述

文章目录 一、前言二、依赖属性2.1 前置知识2.2 依赖属性与CLR属性2.3 依赖属性支持CLR属性2.4 设置属性值2.4.1 在XAML中设置属性值2.4.2 在代码中设置属性 2.5 依赖属性提供的属性功能2.5.1 资源2.5.2 数据绑定2.5.3 样式2.5.4 动画2.5.5 元数据覆盖2.5.6 属性值继承2.5.7 WP…

基于GitBucket的Hook构建ES检索PDF等文档全栈方案

背景 之前已简单使用ES及Kibana和在线转Base64工具实现了检索文档的demo&#xff0c;预期建设方案是使用触发器类型从公共的文档源拉取最新的文件&#xff0c;然后调用Java将文件转Base64后入ES建索引&#xff0c;再提供封装接口给前端做查询之用。 由于全部内容过长&#xff…

YOLO算法改进Backbone系列之:RepViT

摘要&#xff1a;近年来&#xff0c;与轻量级卷积神经网络(cnn)相比&#xff0c;轻量级视觉变压器(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。这种改进通常归功于多头自注意模块&#xff0c;它使模型能够学习全局表示。然而&#xff0c;轻量级vit和轻量级cn…

《操作系统真相还原》读书笔记四:安装nasm

下载链接&#xff1a;https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/ 下载-解压-安装 tar zxvf nasm-2.13.03.tar.gz ./configure --prefix/home/truthos/nasm/toolchain/make && makeinstall执行make install export PATH/home/truthos/nasm/toolchain/bin:…

微信小程序云开发教程——墨刀原型工具入门(编辑页面)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

硬件工程师面经整理20_阻抗匹配

文章目录 阻抗匹配_微波电路/低噪放/差分信号线1 微波电路的匹配电阻2 低噪声运放阻抗匹配3 差分信号线阻抗匹配一般是多少 互连链路阻抗特性 阻抗匹配_微波电路/低噪放/差分信号线 1 微波电路的匹配电阻 微波电路的匹配电阻指的是在微波频段内&#xff0c;由于电路阻抗的不匹…

html标签之表格标签,资料分享

二.准备工作 与中国大部分在校生一样&#xff0c;从不考虑多多参加社会活动为自己铺路&#xff0c;直到找工作时才发现自己一无所有。 是的&#xff0c;一无所有。对于求职来说&#xff0c;如果不找对口工作&#xff0c;那么你的专业知识已经无用武之地。能证明你能力的实践活…

Windows上websocket客户端连接定时存储消息到文件并加载文件定时发送服务端工具实现

场景 在业务开发中&#xff0c;需要对接三方websocket协议数据或者连接并存储线上websocket协议数据&#xff0c;需要使用websocket客户端 连接线上的websocket服务端获取并存储数据&#xff0c;然后将数据存储成文件格式可移植&#xff0c;并将数据复制 到本地&#xff0c;…

MATLAB知识点:while循环的注意事项

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 在使用while循…

Linux中basename作用

在Shell脚本中&#xff0c;basename 是一个用于提取文件名或路径的基本名称&#xff08;basename&#xff09;的工具。它通常用于处理文件路径&#xff0c;以获取文件的名称部分或去除路径信息。 basename 命令的语法如下&#xff1a; basename STRING [SUFFIX] 其中&#x…

docker 安装rabbitmq并配置hyperf使用

这里我想完成的是 制作消息&#xff08;多个协程制造&#xff09;——》推送到rabbitmq——》订阅消息队列——》消费消息&#xff08;ws协程客户端【一次消费多条】/ws前端&#xff09; 利用 WebSocket 协议让客户端和服务器端保持有状态的长链接&#xff0c;保存链接上来的客…

Grind 75 | 1. Two Sum | 2. valid parentheses

来刷刷Grind 75, Blind 75作者更新版. Leetcode1 两数之和 经典题 link 思路&#xff1a; 很明显用hash table&#xff0c;一开始思考遍历2遍数组&#xff0c;第一遍加入hash table中&#xff0c; 第二遍对每个元素看能不能找到sum target&#xff0c;但思考如果有重复元素…

阿里云2核4G服务器支持多少人同时在线?

2核4G服务器支持多少人在线&#xff1f;阿里云服务器网账号下的2核4G服务器支持20人同时在线访问&#xff0c;然而应用不同、类型不同、程序效率不同实际并发数也不同&#xff0c;2核4G服务器的在线访问人数取决于多个变量因素&#xff1a; 2核4G&#xff1a;2核CPU和4G内存对…