• 无缝数据转换!使用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 = new Workbook();
    
        //加载Excel文档
        workbook->LoadFromFile(inputFile.c_str());
    
        //获取特定工作表
        intrusive_ptr sheet = dynamic_pointer_cast(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 = new Workbook();
    
            //加载Excel文档
            workbook->LoadFromFile(inputFile.c_str());
    
            //获取特定工作表
            intrusive_ptr sheet = dynamic_pointer_cast(workbook->GetWorksheets()->Get(0));
    
            //将工作表中的可见数据保存到CSV文件中
        dynamic_pointer_cast(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 = new Workbook();
    
                //加载CSV文档
                workbook->LoadFromFile(inputFile.c_str(), L",");
    
                //获取特定工作表
                intrusive_ptr sheet = dynamic_pointer_cast(workbook->GetWorksheets()->Get(0));
            
                 //将忽略错误选项设置为将特定单元格区域中的数字保存为文本时忽略错误
        dynamic_pointer_cast(sheet->GetRange(L"D2:D12"))->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText);
                sheet->GetAllocatedRange()->AutoFitColumns();
    
                //保存文档
                workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
                workbook->Dispose();
            }
    复制代码

    效果图

    —本文完—

  • 相关阅读:
    搭建自己的pts性能测试平台--jmeter+influxdb+chronograf+grafana
    Vulkan与OpenGL对比——Vulkan的全新渲染架构
    前端格式化工具
    Qt实现手动切换多种布局
    2023-05-24:为什么要使用Redis做缓存?
    sql注入总结
    vi文件保存退出命令":wq"和":x"的区别(经典深入剖析)
    太空射击第14课: 玩家生命
    车载通信架构 —— 传统车内通信网络发展回顾
    论文阅读笔记《Deep Graph Matching under Quadratic Constraint》
  • 原文地址:https://www.cnblogs.com/Yesi/p/17514895.html