无缝数据转换!使用C++ 实现 Excel文件与CSV之间的相互转换
CSV格式是一种通用的文本文件格式,可在多个应用程序之间共享和使用。相比之下,Excel文件是一种电子表格格式,通常只能在Microsoft Excel中编辑和查看。因此,将Excel文件转换为CSV格式可使数据更方便地在其他应用程序中使用;而将CSV文件转换为Excel格式则有利于在Microsoft Excel中编辑和查看。这种互相转换可以方便地在不同应用程序之间交换或分享数据。在本文中,我们将演示如何使用 Spire.XLS for C++ 将 Excel 转换为 CSV 或将 CSV 转换为Excel。
- 将 Excel 转换为 CSV
- 将 Excel 中的可见数据转换为 CSV
- 将 CSV 转换为 Excel
安装 Spire.XLS for C++
有两种方法可以将 Spire.XLS for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.XLS for C++ 集成到 C++ 程序中
将 Excel 转换为 CSV
具体步骤如下:
- 初始化 Workbook 类的实例。
- 使用 Workbook->LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook->GetWorksheets()->Get(int index) 方法通过索引获取工作簿中的特定工作表。
- 使用 XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, Spire::Common::Encoding* encoding) 方法将工作表保存到 CSV 文件中。
完整代码
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定输出文件路径和名称
std::wstring inputPath = L"输入\\";
std::wstring inputFile = inputPath + L"示例文档.xlsx";
std::wstring outputPath = L"输出\\";
std::wstring outputFile = outputPath + L"结果文档.csv";
//初始化 Workbook 类的实例
intrusive_ptr<Workbook> workbook = new Workbook();
//加载Excel文档
workbook->LoadFromFile(inputFile.c_str());
//获取特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//将工作表保存为CSV文件
sheet->SaveToFile(outputFile.c_str(), L",", Encoding::GetUTF8());
workbook->Dispose();
}
效果图

将 Excel 中的可见数据转换为 CSV
如果只想将工作表中的可见数据保存为 CSV,具体步骤如下:
- 初始化 Workbook 类的实例。
- 使用 Workbook->LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook->GetWorksheets()->Get(int index) 方法通过索引获取工作簿中的特定工作表。
- 使用 XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, bool retainHiddenData) 方法将工作表中的可见数据保存到 CSV 文件中。
完整代码
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定输出文件路径和名称
std::wstring inputPath = L"输入\\";
std::wstring inputFile = inputPath + L"示例文档.xlsx";
std::wstring outputPath = L"输出\\";
std::wstring outputFile = outputPath + L"结果文档.csv";
//初始化 Workbook 类的实例
intrusive_ptr<Workbook> workbook = new Workbook();
//加载Excel文档
workbook->LoadFromFile(inputFile.c_str());
//获取特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//将工作表中的可见数据保存到CSV文件中
dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0))->SaveToFile(outputFile.c_str(), L";", false);
workbook->Dispose();
}
效果图

将 CSV 转换为 Excel
将 CSV 文件转换为 Excel的具体步骤如下:
- 初始化 Workbook 类的实例。
- 使用 Workbook->LoadFromFile(LPCWSTR_S fileName,LPCWSTR_S separator) 方法加载带有分隔符的 CSV 文件。
- 使用 Workbook->GetWorksheets()->Get(int index) 方法通过索引获取文件中的特定工作表。
- 设置忽略错误选项,以在使用 Worksheet->GetRange(LPCWSTR_S name)->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText) 方法将特定单元格范围中的数字保存为文本时忽略错误。
- 使用 Worksheet->GetAllocatedRange()->AutoFitColumns() 方法自动调整列宽。
- 使用 Workbook->SaveToFile (LPCWSTR_S fileName, ExcelVersion version) 方法将 CSV 文件保存到 Excel 文件中。
完整代码
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定输出文件路径和名称
std::wstring inputPath = L"输入\\";
std::wstring inputFile = inputPath + L"示例.csv";
std::wstring outputPath = L"输出\\";
std::wstring outputFile = outputPath + L"CSVToExcel_out.xlsx";
//初始化 Workbook 类的实例
intrusive_ptr<Workbook> workbook = new Workbook();
//加载CSV文档
workbook->LoadFromFile(inputFile.c_str(), L",");
//获取特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//将忽略错误选项设置为将特定单元格区域中的数字保存为文本时忽略错误
dynamic_pointer_cast<CellRange>(sheet->GetRange(L"D2:D12"))->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText);
sheet->GetAllocatedRange()->AutoFitColumns();
//保存文档
workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
workbook->Dispose();
}
效果图

—本文完—
无缝数据转换!使用C++ 实现 Excel文件与CSV之间的相互转换的更多相关文章
- 将Excel文件转为csv文件的python脚本
#!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级 ...
- pandas处理excel文件和csv文件
一.csv文件 csv以纯文本形式存储表格数据 pd.read_csv('文件名'),可添加参数engine='python',encoding='gbk' 一般来说,windows系统的默认编码为g ...
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- java读取excel文件(.xls,xlsx,csv)
前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系: 在<dependencies>中添加如下代码 <dependency> <grou ...
- Excelbatis-一个将excel文件读入成实体列表、将实体列表解析成excel文件的ORM框架,简洁易于配置、可扩展性好
欢迎使用Excelbatis! github地址:https://github.com/log4leo/Excelbatis Excelbatis的优点 和spring天然结合,易于接入 xsd支持, ...
- 以ORM的思路来从Excel文件中读取JSON数据列表
1.一个常见的问题就是如何读取excel. 这里面有几个分支的问题,一个是如何使用poi读取excel,网上例子很多,但是这只解决了第一步.如何将excel读取入一定的数据结构这是第二个问题,还有就是 ...
- ASP.NETCore -----导入Excel文件
前端上传excel文件利用npoi读取数据转换成datatable(netcore坑爹啊,用的vs2017竟然不能可视化) 前端界面 @{ Layout = null; } <!DOCTYPE ...
- 导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)
最近在项目中,遇到一些需求,就是将数据导出来,以Excel文件为主:就自己简单的做一些demo:供初学者来学习: // 定义一个保存文件的路径位置 SaveFileDialog dlgPath = n ...
- Spring Boot下的一种导入Excel文件的代码框架
1.前言 Spring Boot下如果只是导入一个简单的Excel文件,是容易的.网上类似的文章不少,有的针对具体的实体类,代码可重用性不高:有的利用反射机制或自定义注解,开发了Excel导入工具 ...
- Spring Boot下的一种导出Excel文件的代码框架
1.前言 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能.与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重用性,并保持导出数据 ...
随机推荐
- window安装openslide库
下载openslide二进制文件: 链接:https://openslide.org/download/ 将下载好的ZIP文件解压到Anaconda的Library目录下(你也可以选择自己喜欢的目录 ...
- [操作系统] - 进程切换&进程控制
2.1.6 进程切换 名称解析 进程的上下文(Context) 当一个进程在执行时,CPU的所有寄存器的值.进程的状态以及堆栈中的内容被称为进程的上下文Context 进程的切换(switch) 当内 ...
- [操作系统] - 进程状态&进程描述
2.1 进程(Process) 2.1.1 定义 chatGPT版:一个具有独立功能的程序关于某个数据集合的一次运行活动 人话版:程序在并发环境中的执行过程& 进程是程序的一次执行 2.1.2 ...
- 26-code split
第一种:多入口 const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin' ...
- SqlServer查看表结构
SELECT CASE WHEN col.colorder = 1 THEN obj.name ELSE '' END AS 表名 ,CASE WHEN col.colorder=1 then isn ...
- 6个优化策略,助你降低K8S成本
Kubernetes 早已成为容器编排引擎的事实标准,而随着 Kubernetes 环境的复杂性持续增长,成本也在不断攀升.CNCF 发布的调查报告<Kubernetes 的 FinOps> ...
- 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置
目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 CH32V208 CH32V208系列是沁恒32位RISC-V中比较新的一个系列, 基于青稞RISC ...
- Spring Security 报:Encoded password does not look like BCrypt
SpringBoot 集成 Security 时,报 Encoded password does not look like BCrypt 原因:SecurityConfig 必须 Bean 的形式实 ...
- pytest测试实战和练习
开头 经过前面几章的学习,这时候要来个测试实战会比较好巩固一下学过的知识 任务要求 1.实现计算器(加法,除法)的测试用例 2.使用数据驱动完成测试用例的自动生成 3.在调用测试方法之前打印[开始计算 ...
- Git&GitHub简介与入手(二)
四.GitHub 1.建账号,仓库 https://github.com/ 用邮箱在官网注册: 增加远程库的地址取别名为origin,push为推送,fetch为取回: 2.推送操作 将本地当前所在 ...