使用C++实现Excel文件与CSV之间的相互转换

 更新时间:2023年06月30日 08:34:36   作者:E-iceblue  
这篇文章主要为大家详细介绍了如何使用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之间的相互转换的文章就介绍到这了,更多相关C++ Excel转CSV内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV外接USB摄像头的方法

    OpenCV外接USB摄像头的方法

    这篇文章主要为大家详细介绍了OpenCV外接USB摄像头的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • C语言中多维数组的内存分配和释放(malloc与free)的方法

    C语言中多维数组的内存分配和释放(malloc与free)的方法

    写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误。下面贴上一些示例代码,以供参考。
    2013-05-05
  • C++实现LeetCode(71.简化路径)

    C++实现LeetCode(71.简化路径)

    这篇文章主要介绍了C++实现LeetCode(71.简化路径),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言中调用Swift函数实例详解

    C语言中调用Swift函数实例详解

    这篇文章主要介绍了C语言中调用Swift函数实例详解的相关资料,实现该功能可以通过定义全局的指向Blocks的对象指针来实现,需要的朋友可以参考下
    2017-07-07
  • C++多继承多态的实例详解

    C++多继承多态的实例详解

    这篇文章主要介绍了C++多继承多态的实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++前缀树字典树的学习与模拟实现代码示例

    C++前缀树字典树的学习与模拟实现代码示例

    这篇文章主要介绍了C++前缀树字典树的学习与模拟实现代码示例,Trie又被称为前缀树、字典树,所以当然是一棵树,上面这棵Trie树包含的字符串集合是{in,inn,int,tea,ten,to},每个节点的编号是我们为了描述方便加上去的,需要的朋友可以参考下
    2023-07-07
  • 基于OpenCV实现图像分割

    基于OpenCV实现图像分割

    这篇文章主要为大家详细介绍了基于OpenCV实现图像分割,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++类模板实战之vector容器的实现

    C++类模板实战之vector容器的实现

    本文我们将做一个类模板实战-手写精简版vector容器。让我们自己封装一个数组类,可以适应基本数据类型和自定义数据类型,感兴趣的可以了解一下
    2022-07-07
  • C语言实现带头双向循环链表的接口

    C语言实现带头双向循环链表的接口

    这篇文章主要为大家详细介绍了C语言实现带头双向循环链表的接口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • c++中priority_queue模拟的实现

    c++中priority_queue模拟的实现

    priority_queue是C++标准库中的一个容器适配器,用于实现优先队列的数据结构,本文主要介绍了c++中priority_queue模拟的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09

最新评论