如何通過C++ 將數據寫入 Excel 工作表

来源:https://www.cnblogs.com/Yesi/archive/2023/03/10/17203906.html
-Advertisement-
Play Games

直觀的界面、出色的計算功能和圖表工具,使Excel成為最流行的個人電腦數據處理軟體。在獨立的數據包含的信息量太少,而過多的數據又難以理清頭緒時,製作成表格是數據管理的最有效手段之一。這樣不僅可以方便整理數據,還可以方便我們查找和應用數據。後期我們還可以對具有相似表格框架,相同性質的數據進行合併彙總... ...


直觀的界面、出色的計算功能和圖表工具,使Excel成為最流行的個人電腦數據處理軟體。在獨立的數據包含的信息量太少,而過多的數據又難以理清頭緒時,製作成表格是數據管理的最有效手段之一。這樣不僅可以方便整理數據,還可以方便我們查找和應用數據。後期我們還可以對具有相似表格框架,相同性質的數據進行合併彙總工作。在本文中,您將學習如何使用 Spire.XLS for C++ 創建 Excel 文檔,以及如何將數據寫入 Excel 工作表

  • 在 C++ 中將文本或數字值寫入單元格
  • 在 C++ 中將數組寫入指定的單元格範圍

安裝Spire.XLS for C++

有兩種方法可以將 Spire.XLS for C++ 集成到您的應用程式中。一種方法是通過 NuGet 安裝它,另一種方法是從我們的網站下載包並將庫複製到您的程式中。通過 NuGet 安裝更簡單,更推薦使用。您可以通過訪問以下鏈接找到更多詳細信息。

在 C++ 應用程式中集成 Spire.XLS for C++

在 C++ 中將文本或數字值寫入單元格

Spire.XLS for C++ 提供了 Workbook 類和 Worksheet 類,分別表示 Excel 文檔和工作表。 用戶可以使用 Worksheet->GetRange(int row, int column) 方法訪問特定的單元格。然後,使用 CellRange->SetText()CellRange->SetNumberValue() 方法為單元格分配一個文本值或數字值。以下是詳細步驟:

  • 創建一個Workbook對象。
  • 使用 Workbook->GetWorksheets()->Get() 方法獲取第一個工作表。
  • 使用 Worksheet->GetRange(int row, int column) 方法獲取特定單元格。
  • 使用 CellRange->SetText()CellRange->SetNumberValue() 方法將文本值或數字值添加到指定的單元格。
  • 使用 Workbook->SaveToFile() 方法將工作簿保存到 Excel 文件。

完整代碼

C++

#include "Spire.Xls.o.h";

using namespace Spire::Xls;

int main() {

    //指定輸出文件路徑和名稱
    std::wstring outputPath = L"輸出\\";
    std::wstring outputFile = outputPath + L"將單個值寫入單元格.xlsx";

    //創建一個Workbook對象
    Workbook* workbook = new Workbook();

    //獲取第一個工作表
    Worksheet* sheet = workbook->GetWorksheets()->Get(0);

    //將文本和數字寫入指定的單元格
    sheet->GetRange(1, 1)->SetText(L"名字");
    sheet->GetRange(1, 2)->SetText(L"年齡");
    sheet->GetRange(1, 3)->SetText(L"部門");
    sheet->GetRange(1, 4)->SetText(L"入職日期");
    sheet->GetRange(1, 1)->SetText(L"名字");
    sheet->GetRange(2, 1)->SetText(L"謝殊");
    sheet->GetRange(2, 2)->SetNumberValue(29);
    sheet->GetRange(2, 3)->SetText(L"市場部");
    sheet->GetRange(2, 4)->SetText(L"2018-02-26");
    sheet->GetRange(3, 1)->SetText(L"李強");
    sheet->GetRange(3, 2)->SetNumberValue(30);
    sheet->GetRange(3, 3)->SetText(L"人力資源部");
    sheet->GetRange(3, 4)->SetText(L"2017-07-13");
    sheet->GetRange(4, 1)->SetText(L"高陽");
    sheet->GetRange(4, 2)->SetNumberValue(35);
    sheet->GetRange(4, 3)->SetText(L"策劃部");
    sheet->GetRange(4, 4)->SetText(L"2015-04-01");

    //自動調整列寬
    sheet->GetAllocatedRange()->AutoFitColumns();

    //將樣式應用於第一行
    CellStyle* style = workbook->GetStyles()->Add(L"newStyle");
    style->GetFont()->SetIsBold(true);
    sheet->GetRange(1, 1, 1, 4)->SetStyle(style);

    //保存文件
    workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);
    workbook->Dispose();
}

效果圖

在 C++ 中將數組寫入指定的單元格範圍

Spire.XLS for C++ 提供了 Worksheet->InsertArray() 方法,它允許程式員將向量寫入工作表的指定單元格範圍。在將數組寫入工作表之前,您需要將它們轉換為向量。將數組寫入工作表的步驟如下:

  • 創建一個Workbook對象。
  • 使用 Workbook->GetWorksheets()->Get() 方法獲取第一個工作表。
  • 創建一個數組並將其轉換為一個向量或多個向量。
  • 使用 Worksheet->InsertArray() 方法將向量插入工作表。
  • 使用 Workbook->SaveToFile() 方法將工作簿保存到 Excel 文件。

完整代碼

C++

#include "Spire.Xls.o.h";

using namespace Spire::Xls;
using namespace std;

int main() {

    //指定輸出文件路徑和名稱
    wstring outputPath = L"輸出\\";
    wstring outputFile = outputPath + L"將數組寫入指定的單元格範圍.xlsx";

    //創建一個Workbook對象
    Workbook* workbook = new Workbook();

    //獲取第一個工作表
    Worksheet* sheet = workbook->GetWorksheets()->Get(0);

    //創建一維數組
    wstring oneDimensionalArray[6] = { L"一月", L"二月", L"三月", L"四月", L"五月", L"六月" };

    //將數組轉換為向量
    vector<LPCWSTR> vec;
    for (size_t i = 0; i < sizeof(oneDimensionalArray) / sizeof(oneDimensionalArray[0]); i++)
    {
        vec.push_back(oneDimensionalArray[i].c_str());
    }

    //將向量插入工作表
    sheet->InsertArray(vec, 1, 1, false);

    //創建一個二維數組
    wstring twoDimensionalArray[4][5] = {
        {L"姓名", L"年齡", L"性別", L"部門.", L"聯繫方式."},
        {L"李剛", L"25", L"", L"廣告部", L"835256"},
        {L"劉興桐", L"24", L"", L"運營策劃部", L"835583"},
        {L"陳海波", L"26", L"", L"銷售部", L"834176"}
    };

    //獲取行號和列號
    int rowNum = sizeof(twoDimensionalArray) / sizeof(twoDimensionalArray[0]);
    int columnNum = sizeof(twoDimensionalArray[0]) / sizeof(twoDimensionalArray[0][0]);

    //將二維數組拆分為多個一維向量
    for (size_t i = 0; i < rowNum; i++)
    {
        vector<LPCWSTR> vec_temp;
        for (size_t j = 0; j < columnNum; j++)
        {
            vec_temp.push_back(twoDimensionalArray[i][j].c_str());
        }

        //將向量插入工作表
        sheet->InsertArray(vec_temp, 4 + i, 1, false);
    }

    //自動調整列寬
    sheet->GetAllocatedRange()->AutoFitColumns();

    //將樣式應用於第一行
    CellStyle* style = workbook->GetStyles()->Add(L"newStyle");
    style->GetFont()->SetIsBold(true);
    sheet->GetRange(1, 1, 1, 6)->SetStyle(style);
    sheet->GetRange(4, 1, 4, 5)->SetStyle(style);

    //保存文件
    workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);
    workbook->Dispose();
}

效果圖

—本文完—


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在 Web 應用程式中(通俗點,可以理解成一個網站),Session 和 Cookie 是兩個非常重要的概念,主要用於實現用戶身份認證、數據傳遞等功能。今天就來講講這兩個東西。 ...
  • CF鏈接:Almost Identity Permutations Luogu鏈接:Almost Identity Permutations $ {\scr \color {Aquamarine}{\text{Solution}}} $ 前言 這好像是一道能用數學秒掉的題目 但由於我喜歡DP過菜,我 ...
  • 2.HelloSpring 思考問題? Hello對象是誰創建的? Hello對象是由Spring設置的 Hello 對象的屬性是怎麼設置的? Hello 對象的屬性是Spring容器設置的 這個過程就叫控制反轉 控制:誰來控制對象的創建,傳統應用程式的對象是由程式本身控制創建的,使用Spring後 ...
  • 哈嘍大家好 今天給大家分享一個用Python開發一款飛翔的小鳥游戲。 飛翔的小鳥(游戲英文名:Flappy Bird) 一款由越南獨立開發者開發的手機游戲,是之前非常流行的一款手機游戲 小游戲目標:讓小鳥穿過管子,不要碰到任何物體,挑戰更遠距離 今天,就讓我們一起用python來複刻一下這款游戲吧! ...
  • SpringBoot 文件上傳+攔截器 文件上傳原理 表單的enctype屬性規定在發送到伺服器之前應該如何對錶單數據進行編碼。 當表單的enctype="application/x-www-form-urlencoded"(預設)時,form表單中的數據格式為:key=value&key=valu ...
  • 我可以明確地回答.我們之所以選擇Postgres,是因為它在操作上比MySQL更可靠,而當時公司的創始人相信SQL資料庫的可移植性. 隨著年份的發展,我們發現了這一點,我們發現基本上,Postgres是Rough中的這款鑽石,它具有一系列功能和一個開發社區,這是我們見過的最不可思議的開源項目之一,並 ...
  • Lua語言線上運行編譯,是一款可線上編程編輯器,在編輯器上輸入Lua語言代碼,點擊運行,可線上編譯運行Lua語言,Lua語言代碼線上運行調試,Lua語言線上編譯,可快速線上測試您的Lua語言代碼,線上編譯Lua語言代碼發現是否存在錯誤,如果代碼測試通過,將會輸出編譯後的結果。 該線上工具由IT寶庫提 ...
  • 3.0版本以前listener中拋出的所有異常都會被easyexcel捕獲,並且包裝成ExcelAnalysisException,寫法如下: private void parseXmlSource(InputStream inputStream, ContentHandler handler) { ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...