当前位置: 首页 > news >正文

如何通过C++ 将数据写入 Excel 工作表

直观的界面、出色的计算功能和图表工具,使Excel成为了最流行的个人计算机数据处理软件。在独立的数据包含的信息量太少,而过多的数据又难以理清头绪时,制作成表格是数据管理的最有效手段之一。这样不仅可以方便整理数据,还可以方便我们查找和应用数据。后期我们还可以对具有相似表格框架,相同性质的数据进行合并汇总工作。在本文中,您将学习如何使用 Spire.XLS for C++ 创建 Excel 文档,以及如何将数据写入 Excel 工作表

  • 在 C++ 中将文本或数字值写入单元格
  • 在 C++ 中将数组写入指定的单元格范围

安装Spire.XLS for C++

有两种方法可以将 Spire.XLS for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。

在 C++ 应用程序中集成 Spire.XLS for C++

在 C++ 中将文本或数字值写入单元格

Spire.XLS for C++ 提供了 Workbook 类和 Worksheet 类,分别表示 Excel 文档和工作表。 用户可以使用 Worksheet->GetRange(int row, int column) 方法访问特定的单元格。然后,使用 CellRange->SetText()CellRange->SetNumberValue() 方法为单元格分配一个文本值或数字值。以下是详细步骤:

  • 创建一个Workbook对象。
  • 使用 Workbook->GetWorksheets()->Get() 方法获取第一个工作表。
  • 使用 Worksheet->GetRange(int row, int column) 方法获取特定单元格。
  • 使用 CellRange->SetText()CellRange->SetNumberValue() 方法将文本值或数字值添加到指定的单元格。
  • 使用 Workbook->SaveToFile() 方法将工作簿保存到 Excel 文件。

完整代码

C++

#include "Spire.Xls.o.h";using namespace Spire::Xls;int main() {//指定输出文件路径和名称std::wstring outputPath = L"输出\\";std::wstring outputFile = outputPath + L"将单个值写入单元格.xlsx";//创建一个Workbook对象Workbook* workbook = new Workbook();//获取第一个工作表Worksheet* sheet = workbook->GetWorksheets()->Get(0);//将文本和数字写入指定的单元格sheet->GetRange(1, 1)->SetText(L"名字");sheet->GetRange(1, 2)->SetText(L"年龄");sheet->GetRange(1, 3)->SetText(L"部门");sheet->GetRange(1, 4)->SetText(L"入职日期");sheet->GetRange(1, 1)->SetText(L"名字");sheet->GetRange(2, 1)->SetText(L"谢殊");sheet->GetRange(2, 2)->SetNumberValue(29);sheet->GetRange(2, 3)->SetText(L"市场部");sheet->GetRange(2, 4)->SetText(L"2018-02-26");sheet->GetRange(3, 1)->SetText(L"李强");sheet->GetRange(3, 2)->SetNumberValue(30);sheet->GetRange(3, 3)->SetText(L"人力资源部");sheet->GetRange(3, 4)->SetText(L"2017-07-13");sheet->GetRange(4, 1)->SetText(L"高阳");sheet->GetRange(4, 2)->SetNumberValue(35);sheet->GetRange(4, 3)->SetText(L"策划部");sheet->GetRange(4, 4)->SetText(L"2015-04-01");//自动调整列宽sheet->GetAllocatedRange()->AutoFitColumns();//将样式应用于第一行CellStyle* style = workbook->GetStyles()->Add(L"newStyle");style->GetFont()->SetIsBold(true);sheet->GetRange(1, 1, 1, 4)->SetStyle(style);//保存文件workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);workbook->Dispose();
}

效果图

在 C++ 中将数组写入指定的单元格范围

Spire.XLS for C++ 提供了 Worksheet->InsertArray() 方法,它允许程序员将向量写入工作表的指定单元格范围。在将数组写入工作表之前,您需要将它们转换为向量。将数组写入工作表的步骤如下:

  • 创建一个Workbook对象。
  • 使用 Workbook->GetWorksheets()->Get() 方法获取第一个工作表。
  • 创建一个数组并将其转换为一个向量或多个向量。
  • 使用 Worksheet->InsertArray() 方法将向量插入工作表。
  • 使用 Workbook->SaveToFile() 方法将工作簿保存到 Excel 文件。

完整代码

C++

#include "Spire.Xls.o.h";using namespace Spire::Xls;
using namespace std;int main() {//指定输出文件路径和名称wstring outputPath = L"输出\\";wstring outputFile = outputPath + L"将数组写入指定的单元格范围.xlsx";//创建一个Workbook对象Workbook* workbook = new Workbook();//获取第一个工作表Worksheet* sheet = workbook->GetWorksheets()->Get(0);//创建一维数组wstring oneDimensionalArray[6] = { L"一月", L"二月", L"三月", L"四月", L"五月", L"六月" };//将数组转换为向量vector<LPCWSTR> vec;for (size_t i = 0; i < sizeof(oneDimensionalArray) / sizeof(oneDimensionalArray[0]); i++){vec.push_back(oneDimensionalArray[i].c_str());}//将向量插入工作表sheet->InsertArray(vec, 1, 1, false);//创建一个二维数组wstring twoDimensionalArray[4][5] = {{L"姓名", L"年龄", L"性别", L"部门.", L"联系方式."},{L"李刚", L"25", L"男", L"广告部", L"835256"},{L"刘兴桐", L"24", L"女", L"运营策划部", L"835583"},{L"陈海波", L"26", L"男", L"销售部", L"834176"}};//获取行号和列号int rowNum = sizeof(twoDimensionalArray) / sizeof(twoDimensionalArray[0]);int columnNum = sizeof(twoDimensionalArray[0]) / sizeof(twoDimensionalArray[0][0]);//将二维数组拆分为多个一维向量for (size_t i = 0; i < rowNum; i++){vector<LPCWSTR> vec_temp;for (size_t j = 0; j < columnNum; j++){vec_temp.push_back(twoDimensionalArray[i][j].c_str());}//将向量插入工作表sheet->InsertArray(vec_temp, 4 + i, 1, false);}//自动调整列宽sheet->GetAllocatedRange()->AutoFitColumns();//将样式应用于第一行CellStyle* style = workbook->GetStyles()->Add(L"newStyle");style->GetFont()->SetIsBold(true);sheet->GetRange(1, 1, 1, 6)->SetStyle(style);sheet->GetRange(4, 1, 4, 5)->SetStyle(style);//保存文件workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);workbook->Dispose();
}

效果图

 —本文完—

相关文章:

如何通过C++ 将数据写入 Excel 工作表

直观的界面、出色的计算功能和图表工具&#xff0c;使Excel成为了最流行的个人计算机数据处理软件。在独立的数据包含的信息量太少&#xff0c;而过多的数据又难以理清头绪时&#xff0c;制作成表格是数据管理的最有效手段之一。这样不仅可以方便整理数据&#xff0c;还可以方便…...

Kalman Filter in SLAM (6) ——Error-state Kalman Filter (EsKF, 误差状态卡尔曼滤波)

文章目录0.前言1. IMU的误差状态空间方程2. 误差状态观测方程3. 误差状态卡尔曼滤波4. 误差状态卡尔曼滤波方程细节问题0.前言 这里先说一句&#xff1a;什么误差状态卡尔曼&#xff1f;完全就是在扯淡&#xff01; 回想上面我们推导的IMU的误差状态空间方程&#xff0c;其实…...

centos7部署KVM虚拟化

目录 centos7部署KVM虚拟化平台 1、新建一台虚拟机 2、系统内的操作 1、修改主机名 2、挂载镜像光盘 3、ssh优化 4、设置本地yum仓库 5、关闭防火墙&#xff0c;selinux 3、安装KVM 4、设置KVM网络 5、KVM部署与管理 6、使用虚拟系统管理器管理虚拟机 创建存储池 …...

【华为机试真题详解 Python实现】最小施肥机能效【2023 Q1 | 100分】

文章目录 前言题目描述输入描述输出描述示例 1输入:输出:示例 2输入:输出:题目解析参考代码暴力解法二分法前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可…...

SpringBoot - 什么是跨域?如何解决跨域?

什么是跨域&#xff1f; 在浏览器上当前访问的网站&#xff0c;向另一个网站发送请求&#xff0c;用于获取数据的过程就是跨域请求。 跨域&#xff0c;是浏览器的同源策略决定的&#xff0c;是一个重要的浏览器安全策略&#xff0c;用于限制一个 origin 的文档或者它加载的脚本…...

Astra pro相机使用说明

奥比中光的Astra pro这款相机&#xff0c;目前官网已经搜不到相关信息&#xff0c;应该是停产了。但是很多机器人设备上或者淘宝上还能买到。使用起来经常会出现不同的问题。问题1&#xff1a; 这款相机据网友描述&#xff0c;就是乐视相机LeTMC-520&#xff0c;换了外壳&#…...

扬帆优配|数字经济刮起“东风”,龙头晋级7连板

今日两市共40只涨停股&#xff0c;主要集中于数字经济、6G板块&#xff0c;上一个交易日涨停股为29股&#xff1b;除掉18只ST股及3只一字板新股&#xff0c;共19股涨停。另外&#xff0c;4股封板未遂&#xff0c;整体封板率为83%。 6股封单金额超亿元 从收盘涨停板封单量来看&…...

Day911.DTO和DO为什么要互转 -SpringBoot与K8s云原生微服务实践

DTO和DO为什么要互转 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于DTO和DO为什么要互转的内容。 一、什么是DTO DTO &#xff0c;数据传输对象&#xff0c;全称 &#xff08;Data transfer object&#xff09;&#xff0c;用于网络之间传输通讯的对象模型&#x…...

查找、排序、二叉树的算法,统统记录于此。

文章目录一、查找1. 无序表的顺序查找2. 折半查找3. 分块查找4. 二叉排序树BST5. 哈希表查找二、排序1. 不带哨兵的直接插入排序2. 带哨兵的直接插入排序3. 带哨兵、折半查找的直接插入排序4. 希尔排序5. 冒泡排序6. 快速排序7. 选择排序8. 堆排序9. 归并排序二叉树1. 递归先序…...

如何用Python实现在网页中嵌入YouTube的视频?

要在网页中嵌入YouTube视频&#xff0c;可以使用HTML代码&#xff0c;在Python中使用字符串拼接的方式生成HTML代码。下面是一个示例代码&#xff0c;可以生成嵌入YouTube视频的HTML代码: def embed_youtube_video(video_id, width560, height315): """ 生成嵌…...

Easy Deep Learning——PyTorch中的自动微分

目录 什么是深度学习&#xff1f;它的实现原理是怎么样的呢&#xff1f; 什么是梯度下降&#xff1f;梯度下降是怎么计算出最优解的&#xff1f; 什么是导数&#xff1f;求导对于深度学习来说有何意义&#xff1f; PyTorch 自动微分&#xff08;自动求导&#xff09; 为什么…...

【生物信息】利用ChatGPT解释GO分析中的关于Biological Processes的问题

利用ChatGPT解释GO分析中的一些问题 如何理解GO中的evidence:ISS,这是什么?qualifier:involved_in是什么意思?evidence:TAS是什么?evidence: IBA是什么?evidence: IMP是什么?evidence:IDA是什么?evidence: IEA是什么?GO分析中,evidence: NAS是什么意思?GO分析中…...

2018年MathorCup数学建模C题陆基导弹打击航母的数学建模与算法设计解题全过程文档及程序

2018年第八届MathorCup高校数学建模挑战赛 C题 陆基导弹打击航母的数学建模与算法设计 原题再现&#xff1a; 火箭军是保卫海疆主权的战略力量,导弹是国之利器。保家卫国,匹夫有责。为此,请参赛者认真阅读"陆基反舰导弹打击航母的建模示意图"。(附图 1 )参考图中的…...

打怪升级之CFile类

CFile类 信息源自官方文档&#xff1a;https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfile-class?viewmsvc-170。 CFile是Microsoft 基础类文件类的基类。它直接提供非缓冲的二进制磁盘输入/输出设备&#xff0c;并直接地通过派生类支持文本文件和内存文件。CFile与…...

[css]通过网站实例学习以最简单的方式构造三元素布局

文章目录二元素布局纵向布局横向布局三元素布局b站直播布局实例左右-下 布局左-上下 布局上下-右 布局方案一方案二后言二元素布局 在学习三元素布局之前&#xff0c;让我们先简单了解一下只有两个元素的布局吧 两个元素的相对关系非常简单&#xff0c;不是上下就是左右 纵向布…...

【冲刺蓝桥杯的最后30天】day6

大家好&#x1f603;&#xff0c;我是想要慢慢变得优秀的向阳&#x1f31e;同学&#x1f468;‍&#x1f4bb;&#xff0c;断更了整整一年&#xff0c;又开始恢复CSDN更新&#xff0c;从今天开始更新备战蓝桥30天系列&#xff0c;一共30天&#xff0c;如果对你有帮助或者正在备…...

ssm框架之spring:浅聊IOC

IOC 前面体验了spring&#xff0c;不过其运用了IOC&#xff0c;至于IOC( Inverse Of Controll—控制反转 ) 看一下百度百科解释&#xff1a; 控制反转&#xff08;Inversion of Control&#xff0c;缩写为IoC&#xff09;&#xff0c;是面向对象编程中的一种设计原则&#x…...

pytest初识

一、单元测试框架 &#xff08;1&#xff09;什么是单元测试框架&#xff1f; 单元测试是指在软件开发中&#xff0c;针对软件的最小单元&#xff08;函数、方法&#xff09;进行正确性的检查测试 &#xff08;2&#xff09;单元测试框架 java&#xff1a;junit和testng pytho…...

设计模式~责任链模式(Chain of Responsibility)-12

目录 &#xff08;1&#xff09;优点 &#xff08;2&#xff09;缺点 &#xff08;3&#xff09;使用场景 &#xff08;4&#xff09;注意事项&#xff1a; &#xff08;5&#xff09;应用实例&#xff1a; &#xff08;6&#xff09;经典案例 代码 责任链&#xff0c; …...

【ElasticSearch】(一)—— 初识ES

文章目录1. 了解ES1.1 elasticsearch的作用1.2 ELK技术栈1.3 elasticsearch和lucene1.4 为什么不是其他搜索技术&#xff1f;1.5 总结2. 倒排索引2.1 正向索引2.2 倒排索引2.3 正向和倒排3. ES的一些概念3.1 文档和字段3.2 索引和映射3.3 mysql与elasticsearch1. 了解ES Elasti…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...