无缝数据转换!使用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文件导出,使得代码具有可重用性,并保持导出数据 ...
随机推荐
- kubernetes核心实战(三)--- ReplicationController
5.ReplicationController ReplicationController 确保在任何时候都有特定数量的 Pod 副本处于运行状态.换句话说,ReplicationController ...
- MYSQL5.7.30安装
1.下载MySQL 我用的是5.7.30(安装版) 我选择的下载链接:https://dev.mysql.com/downloads/windows/installer/5.7.html 官网链接:h ...
- [云计算]概念辨析:云计算 [IaaS/PaaS/SaaS & 公有云/私有云/混合云]
1 云计算(Cloud Computing) 1.0 云计算的发展 1.1 概念 "云"实质上就是一个[网络], 狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取&quo ...
- 在idea中将一个javase项目转成ee项目
在idea中将java项目转成web项目 1.创建一个java项目,new一个directory名为web(与src同级) 2. 为web指定根目录:ctrl+shift+alt+s,在module中 ...
- python对图片进行最大边大小缩放
def split_image_bs4(file, max_len=720): """ 切割图片 :param file: 二进制文件 :param max_len: 最 ...
- 【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例
问题描述 查看官方文档" Get a user " , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息. 问题解答 使用Microsoft G ...
- MySQL(九)InnoDB数据结构
InnoDB数据结构 1 数据库的存储结构:页 索引信息和数据记录都是保存在文件上的,确切来说是保存在页结构中:另一方面,索引是在存储引擎上实现的,MySQL服务器上的存储引擎负责对表中数据的读取 ...
- 【Vue项目】尚品汇(六)ShopCar组件开发 购物车模块
4 购物车 4.1 购物车商品数量控制 Detail\index.vue <div class="cartWrap"> <div class="cont ...
- Java开发准备
1.Java是一门面向对象的高级语言 JDK:是java development kit的缩写,意思是java程序开发的工具包. 可以用来开发Java和运行Java程序 JRE:Java Runtim ...
- 用PHPstudy nginx 配置tp6 隐藏访问链接中的index.php
在server 里面加上如下这个判断就好了 if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; 配置在对应网 ...