如何通過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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...