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之间的相互转换的更多相关文章

  1. 将Excel文件转为csv文件的python脚本

    #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级 ...

  2. pandas处理excel文件和csv文件

    一.csv文件 csv以纯文本形式存储表格数据 pd.read_csv('文件名'),可添加参数engine='python',encoding='gbk' 一般来说,windows系统的默认编码为g ...

  3. NPOI操作EXCEL(四)——反射机制批量导出excel文件

    前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...

  4. java读取excel文件(.xls,xlsx,csv)

    前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系: 在<dependencies>中添加如下代码 <dependency> <grou ...

  5. Excelbatis-一个将excel文件读入成实体列表、将实体列表解析成excel文件的ORM框架,简洁易于配置、可扩展性好

    欢迎使用Excelbatis! github地址:https://github.com/log4leo/Excelbatis Excelbatis的优点 和spring天然结合,易于接入 xsd支持, ...

  6. 以ORM的思路来从Excel文件中读取JSON数据列表

    1.一个常见的问题就是如何读取excel. 这里面有几个分支的问题,一个是如何使用poi读取excel,网上例子很多,但是这只解决了第一步.如何将excel读取入一定的数据结构这是第二个问题,还有就是 ...

  7. ASP.NETCore -----导入Excel文件

    前端上传excel文件利用npoi读取数据转换成datatable(netcore坑爹啊,用的vs2017竟然不能可视化) 前端界面 @{ Layout = null; } <!DOCTYPE ...

  8. 导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)

    最近在项目中,遇到一些需求,就是将数据导出来,以Excel文件为主:就自己简单的做一些demo:供初学者来学习: // 定义一个保存文件的路径位置 SaveFileDialog dlgPath = n ...

  9. Spring Boot下的一种导入Excel文件的代码框架

    1.前言 ​ Spring Boot下如果只是导入一个简单的Excel文件,是容易的.网上类似的文章不少,有的针对具体的实体类,代码可重用性不高:有的利用反射机制或自定义注解,开发了Excel导入工具 ...

  10. Spring Boot下的一种导出Excel文件的代码框架

    1.前言 ​ 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能.与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重用性,并保持导出数据 ...

随机推荐

  1. [工具/Maven]Maven工程目录结构 | Maven自动构建骨架(maven-archetype)中quickstart与webapp的区别

    1 maven-archetype-quickstart 1.1 IDEA中的前期准备 1.2 自动构建后 ↓pom.xml↓ <?xml version="1.0" enc ...

  2. day120:MoFang:修复宠物喂食饱食度不增加的BUG&修复宠物死亡导致数据错乱的BUG

    目录 BUG1:修复宠物喂食饱食度未增加的BUG BUG2:修复当用户拥有2个宠物时,如果第1个宠物挂了,会出现第二个宠物变成第1个宠物的情况,会导致数据发生混乱出现bug BUG1:修复宠物喂食饱食 ...

  3. C#模拟C++模板特化对类型的值的支持

    概述 C++的模板相比于C#,有很多地方都更加的灵活(虽然代价是降低了编译速度),比如C++支持变长参数模板.支持枚举.int等类型的值作为模板参数. C++支持枚举.int等类型的值作为模板参数,为 ...

  4. Spring原理探究篇

    spring ioc原理 首先了解一下ioc 的特征,控制反转,就是把之前手动去new对象的操作,现在来交给ioc来实现了,完成代码相对的接偶. 那么,它是怎么去创建bean对象的呐? 原理: 底层依 ...

  5. 关于聚合根,领域事件的那点事---深入浅出理解DDD

    作者:京东物流 赵勇萍 前言 最近有空会跟同事讨论DDD架构的实践落地的情况,但真实情况是,实际中对于领域驱动设计中的实体,值对象,聚合根,领域事件这些战术类的实践落地,每个人理解依然因人而异,大概率 ...

  6. YOLO3论文中文版

    文章目录 YOLO3论文中文版 摘要 1.引言 2. 解决方案 2.1 边界框预测 2.2 类预测 2.3 多尺度预测 2.4 特征提取器 2.5 训练 3.我们的做法 4. 失败的尝试 5.这一切意 ...

  7. 第一章:PyTorch 入门

    第一章:PyTorch 入门 1.1 Pytorch 简介 1.1.1 PyTorch的由来 1.1.2 Torch是什么? 1.1.3 重新介绍 PyTorch 1.1.4 对比PyTorch和Te ...

  8. 2020-10-25:go中channel的close流程是什么?

    福哥答案2020-10-25:

  9. 2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的。

    2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的. ...

  10. Vue2 去除定时器之常用三种方式及特殊方式

    一般情况去除定时器的常用的三种方式方法:创建一下三种钩子函数,一般有其中一个就足以实现清除定时器的效果beforeDestroy(){ beforeDestroy(){ // 离开当前路由前的操作 c ...