国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】開源:跨平臺(tái)Excel處理庫(kù)-libxlsxwriter配置使用

這篇具有很好參考價(jià)值的文章主要介紹了【C++】開源:跨平臺(tái)Excel處理庫(kù)-libxlsxwriter配置使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??★,°:.☆( ̄▽ ̄)/$:.°★ ??
這篇文章主要介紹Excel處理庫(kù)-libxlsxwriter配置使用。
無(wú)專精則不能成,無(wú)涉獵則不能通?!?jiǎn)⒊?/font>
歡迎來(lái)到我的博客,一起學(xué)習(xí),共同進(jìn)步。
喜歡的朋友可以關(guān)注一下,下次更新不迷路??

??1. 項(xiàng)目介紹

項(xiàng)目Github地址:https://github.com/jmcnamara/libxlsxwriter

Wiki地址:https://libxlsxwriter.github.io/

libxlsxwriter 是一個(gè)用于創(chuàng)建 Microsoft Excel XLSX 文件的C庫(kù)。它提供了一系列功能,可以讓您通過(guò)編程方式生成包含單元格、圖表、格式化等內(nèi)容的 Excel 文件。下面是 libxlsxwriter 的一些特點(diǎn)和功能:

1.跨平臺(tái)性:libxlsxwriter 可以在多個(gè)操作系統(tǒng)上工作,包括 Linux、macOS 和 Windows。

2.創(chuàng)建 XLSX 文檔:它允許您創(chuàng)建 XLSX 格式的 Excel 文檔,支持 Excel 2007 及更高版本。

3.豐富的功能:libxlsxwriter 支持創(chuàng)建工作表、單元格、公式、圖表、條件格式化、數(shù)據(jù)篩選等功能。

4.高性能:該庫(kù)被設(shè)計(jì)為具有高性能,在大型數(shù)據(jù)集的情況下生成速度快。

5.支持多種格式和樣式:您可以設(shè)置單元格的格式、字體、顏色、邊框、背景等屬性,以及應(yīng)用數(shù)值格式、日期格式、公式和函數(shù)等。

6.支持圖表:libxlsxwriter 允許您創(chuàng)建各種 Excel 圖表,如條形圖、餅圖、折線圖等,并支持自定義圖表的樣式和屬性。

但是要注意,libxlsxwriter 只能用于創(chuàng)建 XLSX 文件,不支持讀取或修改現(xiàn)有的 Excel 文件。(可以通過(guò)c++自帶的文件處理來(lái)讀取,處理后的數(shù)據(jù)再手動(dòng)導(dǎo)入到最后的表中)

??2. 環(huán)境配置

下面進(jìn)行環(huán)境配置:

# 安裝依賴
sudo apt-get install libxslt-dev
# 下載源碼
git clone https://github.com/jmcnamara/libxlsxwriter
# 編譯
cd libxlsxwriter
make
sudo cp lib/libxlsxwriter.so.5 /usr/lib/libxlsxwriter.so.5
cd cmake
cmake ..
make 
sudo make install

編譯運(yùn)行:

g++ -o main main.cpp -lxlsxwriter && ./main

??3. 使用說(shuō)明

下面進(jìn)行使用分析:

創(chuàng)建excel并寫入示例:

#include "xlsxwriter.h"

int main() {

    /* Create a new workbook and add a worksheet. */
    lxw_workbook  *workbook  = workbook_new("demo.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);

    /* Add a format. */
    lxw_format *format = workbook_add_format(workbook);

    /* Set the bold property for the format */
    format_set_bold(format);

    /* Change the column width for clarity. */
    worksheet_set_column(worksheet, 0, 0, 20, NULL);

    /* Write some simple text. */
    worksheet_write_string(worksheet, 0, 0, "Hello", NULL);

    /* Text with formatting. */
    worksheet_write_string(worksheet, 1, 0, "World", format);

    /* Write some numbers. */
    worksheet_write_number(worksheet, 2, 0, 123,     NULL);
    worksheet_write_number(worksheet, 3, 0, 123.456, NULL);

    /* Insert an image. */
    worksheet_insert_image(worksheet, 1, 2, "logo.png");

    workbook_close(workbook);

    return 0;
}

參考某博主,生成指定個(gè)數(shù)的uuid示例:

#include <chrono>
#include <condition_variable>
#include <ctime>
#include <curl/curl.h>
#include <curl/easy.h>
#include <fstream>
#include <functional>
#include <future>
#include <iostream>
#include <iomanip>
#include <map>
#include <memory>
#include <mutex>
#include <random>
#include <stdio.h>
#include <string>
#include <uuid/uuid.h>
#include <vector>
#include "xlsxwriter.h"

// ref: https://www.cnblogs.com/Fred1987/p/17442487.html
// 編譯: g++ -o main main.cpp -lxlsxwriter -luuid -lpthread && ./main

std::string get_time_now(bool is_exact = false)
{
    std::chrono::time_point<std::chrono::high_resolution_clock> now = std::chrono::high_resolution_clock::now();
    time_t raw_time = std::chrono::high_resolution_clock::to_time_t(now);
    struct tm tm_info = *localtime(&raw_time);
    std::stringstream ss;
    ss << std::put_time(&tm_info, "%Y%m%d%H%M%S");
    if (is_exact)
    {
        std::chrono::seconds seconds = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch());
        std::chrono::milliseconds mills = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch());
        std::chrono::microseconds micros = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch());
        std::chrono::nanoseconds nanos = std::chrono::duration_cast<std::chrono::nanoseconds>(now.time_since_epoch());
        std::uint64_t mills_count = mills.count() - seconds.count() * 1000;
        std::uint64_t micros_count = micros.count() - mills.count() * 1000;
        std::uint64_t nanos_count = nanos.count() - micros.count() * 1000;
        ss << "_" << std::setw(3) << std::setfill('0') << std::to_string(mills_count)
           << std::setw(3) << std::setfill('0') << std::to_string(micros_count)
           << std::setw(3) << std::setfill('0') << std::to_string(nanos_count);
    }
    return ss.str();
}

// generate uuid
char *uuid_value = (char *)malloc(40);
char *get_uuid_value()
{
    uuid_t new_uuid;
    uuid_generate(new_uuid);
    uuid_unparse(new_uuid, uuid_value);
    return uuid_value;
}

void xlsxwriter_excel(const int &len)
{
    lxw_workbook *workbook = workbook_new("uuid.xlsx");

    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
    worksheet_set_column(worksheet,0,0,50,NULL); // 設(shè)置列寬

    // write header
    worksheet_write_string(worksheet, 0, 0, "Header", NULL);
    worksheet_write_string(worksheet, 0, 1, "Number", NULL);

    for (int row = 1; row <= len; row++)
    {
        worksheet_write_string(worksheet, row, 0, get_uuid_value(), NULL);
        worksheet_write_number(worksheet, row, 1, row, NULL);
    }

    workbook_close(workbook);
    std::cout << get_time_now(true) << ",finish in " << __FUNCTION__ << std::endl;
}

int main(int agrs,char **argv)
{
    xlsxwriter_excel(atoi(argv[1])); // 讀取命令行,生成幾個(gè)uuid
    return 0;
}

結(jié)合CGAL計(jì)算幾何庫(kù)對(duì)txt點(diǎn)集進(jìn)行處理,并處理后的數(shù)據(jù)寫入xlsx,示例:

#include <iostream>
#include <fstream>
#include <vector>
#include "xlsxwriter.h"
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Alpha_shape_2.h>

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_2 Point_2;

// 編譯: g++ -o main main.cpp -lxlsxwriter -lCGAL -lgmp && ./main

int main() {
    // 1. 從文本文件中讀取 XY 點(diǎn)集
    std::ifstream inputFile("input.txt");
    if (!inputFile) {
        std::cout << "Failed to open input file." << std::endl;
        return 1;
    }

    std::vector<Point_2> points;
    double x, y;
    while (inputFile >> x >> y) {
        points.push_back(Point_2(x, y));
    }
    inputFile.close();

    // ...

    // 2. 將處理后的點(diǎn)集寫入 xlsx 文件中
    lxw_workbook* workbook = workbook_new("output.xlsx");
    lxw_worksheet* worksheet = workbook_add_worksheet(workbook, NULL);

    int row = 0;
    for (const Point_2& point : points) {
        int col = 0;
        worksheet_write_number(worksheet, row, col++, CGAL::to_double(point.x()), NULL);
        worksheet_write_number(worksheet, row, col, CGAL::to_double(point.y()), NULL);
        row++;
    }

    workbook_close(workbook);

    std::cout << "Output file has been generated." << std::endl;

    return 0;
}

【C++】開源:跨平臺(tái)Excel處理庫(kù)-libxlsxwriter配置使用,# c++開源項(xiàng)目學(xué)習(xí),c++,開源,excel

以上。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-657781.html

到了這里,關(guān)于【C++】開源:跨平臺(tái)Excel處理庫(kù)-libxlsxwriter配置使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【openFrameworks】跨平臺(tái)的 C++ 開源框架 | oF 文件結(jié)構(gòu) | 圖形基礎(chǔ)介紹

    【openFrameworks】跨平臺(tái)的 C++ 開源框架 | oF 文件結(jié)構(gòu) | 圖形基礎(chǔ)介紹

    ? ?? 寫在前面: 本章我們將介紹一個(gè)非常好用的跨平臺(tái)的 C++ 開源框架 —— openFrameworks。它是一個(gè)開源的跨平臺(tái)的 C++工具包,方便開發(fā)者創(chuàng)建出一個(gè)更簡(jiǎn)單和直觀的框架,擅長(zhǎng)開發(fā)圖像和動(dòng)畫。 ?? ?本篇博客全站熱榜排名: 8 ?? 本章目錄: 0x00 openFrameworks 介紹 0x01 開啟

    2024年02月02日
    瀏覽(96)
  • Spacedrive:開源跨平臺(tái)文件管理 | 開源日?qǐng)?bào) No.57

    Spacedrive:開源跨平臺(tái)文件管理 | 開源日?qǐng)?bào) No.57

    Stars: 91.2k License: MIT Deno 是一個(gè)簡(jiǎn)單、現(xiàn)代和安全的 JavaScript 和 TypeScript 運(yùn)行時(shí),使用 V8 引擎并用 Rust 構(gòu)建。其主要功能包括: 默認(rèn)情況下具有高度安全性,除非顯式啟用,否則無(wú)法訪問(wèn)文件、網(wǎng)絡(luò)或環(huán)境。 提供 Web 平臺(tái)功能和 API (如 ES 模塊、Web Workers 和 fetch())。 開箱即用

    2024年02月08日
    瀏覽(95)
  • CPF C#跨平臺(tái)UI框架開源了

    CPF C#跨平臺(tái)UI框架開源了

    C#跨平臺(tái)UI框架 提供NETStandard2.0和net4的庫(kù),通過(guò)Netcore可以跨平臺(tái),支持Windows、Mac、Linux,Net4的可以支持XP。 各個(gè)平臺(tái)運(yùn)行效果一致,不依賴系統(tǒng)控件。 支持窗體,控件任意透明,支持異形窗體,支持SVG圖標(biāo)顯示。 支持動(dòng)畫,數(shù)據(jù)綁定,Mvvm模式,CSS等,簡(jiǎn)化依賴屬性,數(shù)據(jù)綁

    2024年02月05日
    瀏覽(93)
  • .NET開源、跨平臺(tái)的本地日記APP - SwashbucklerDiary

    .NET開源、跨平臺(tái)的本地日記APP - SwashbucklerDiary

    今天給大家推薦一個(gè).NET開源、跨平臺(tái)的本地日記APP:SwashbucklerDiary「 俠客日記 」。 每個(gè)人的心底都有一個(gè)俠客,如影隨風(fēng),陪你看過(guò)一路的風(fēng)景,記得你所有的精彩。 MAUI Blazor Hybrid Masa Blazor SqlSugar Serilog .NET 多平臺(tái)應(yīng)用 UI (.NET MAUI) 是一個(gè)跨平臺(tái)框架,用于使用 C# 和 XAML 創(chuàng)

    2024年02月08日
    瀏覽(122)
  • DBeaver:開源、跨平臺(tái)、強(qiáng)大的數(shù)據(jù)庫(kù)管理工具

    DBeaver:開源、跨平臺(tái)、強(qiáng)大的數(shù)據(jù)庫(kù)管理工具

    1.DBeaver 是什么 DBeaver 是一個(gè)流行的開源數(shù)據(jù)庫(kù)客戶端,它可以用于連接和管理多種不同類型的數(shù)據(jù)庫(kù)系統(tǒng),包括 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等等。 DBeaver 提供了一種直觀的用戶界面,允許用戶執(zhí)行各種數(shù)據(jù)庫(kù)操作,如查詢、修改、備份等等,同時(shí)也提供了一些高

    2024年01月25日
    瀏覽(29)
  • 開源、跨平臺(tái)安卓摸魚(投屏)軟件 Scrcpy 中文使用指南

    開源、跨平臺(tái)安卓摸魚(投屏)軟件 Scrcpy 中文使用指南

    廢話不說(shuō),先上鏈接:GitHub上的Scrcpy Scrcpy 可以將手機(jī)畫面投射到電腦上,讓你可以在電腦上對(duì)手機(jī)進(jìn)行操控。Scrcpy 通過(guò) USB 或 Wi-Fi 與安卓手機(jī)相連,不需要在手機(jī)上安裝任何 app,也不需要取得 ROOT 權(quán)限。 簡(jiǎn)單地說(shuō),就是可以讓你在電腦上控制手機(jī)!它支持鼠標(biāo)控制、鍵盤

    2024年02月12日
    瀏覽(39)
  • 跨平臺(tái)的桌面應(yīng)用程序開發(fā)框架Electron | 開源日?qǐng)?bào) 0906

    跨平臺(tái)的桌面應(yīng)用程序開發(fā)框架Electron | 開源日?qǐng)?bào) 0906

    Stars: 109.3k License: MIT Electron 是一個(gè)基于 Node.js 和 Chromium 的開源框架,允許使用 JavaScript、HTML 和 CSS 編寫跨平臺(tái)的桌面應(yīng)用程序。它被 Atom 編輯器等眾多應(yīng)用程序所采用。該項(xiàng)目具有以下核心優(yōu)勢(shì): 跨平臺(tái):Electron 提供了 macOS、Windows 和 Linux 三個(gè)主要操作系統(tǒng)的二進(jìn)制文件。

    2024年02月09日
    瀏覽(27)
  • C#使用跨平臺(tái)的PdfSharpCore開源庫(kù)生成PDF文件

    C#使用跨平臺(tái)的PdfSharpCore開源庫(kù)生成PDF文件

    ????????在進(jìn)行項(xiàng)目開發(fā)中,需要將C#程序的一些文本內(nèi)容導(dǎo)出為PDF文件(能夠根據(jù)文本自動(dòng)分行分頁(yè)),并且要求這個(gè)生成PDF文件的程序是可跨平臺(tái)的;實(shí)現(xiàn)類似效果: ①將程序的文本內(nèi)容導(dǎo)出為PDF文件; ②能夠?qū)⑽谋緝?nèi)容自動(dòng)分行分頁(yè)【且可添加頁(yè)眉、頁(yè)腳、頁(yè)碼、

    2024年02月16日
    瀏覽(27)
  • 一個(gè)基于.NET Core開源、跨平臺(tái)的倉(cāng)儲(chǔ)管理系統(tǒng)

    一個(gè)基于.NET Core開源、跨平臺(tái)的倉(cāng)儲(chǔ)管理系統(tǒng)

    今天給大家推薦一個(gè)基于.NET Core開源、跨平臺(tái)的倉(cāng)儲(chǔ)管理系統(tǒng),數(shù)據(jù)庫(kù)支持MSSQL/MySQL:ZEQP.WMS。 倉(cāng)儲(chǔ)管理系統(tǒng)(Warehouse Management System,WMS)是一種用于管理和控制倉(cāng)庫(kù)操作的軟件系統(tǒng),它可以幫助企業(yè)實(shí)現(xiàn)對(duì)倉(cāng)庫(kù)內(nèi)物品的跟蹤、存儲(chǔ)、揀選、包裝和發(fā)運(yùn)等全過(guò)程管理,提高倉(cāng)

    2024年02月21日
    瀏覽(913)
  • C#一個(gè)開源跨平臺(tái)的 HTTP 客戶端庫(kù)——RestSharp

    C#一個(gè)開源跨平臺(tái)的 HTTP 客戶端庫(kù)——RestSharp

    GitHub - restsharp/RestSharp: Simple REST and HTTP API Client for .NET Simple REST and HTTP API Client for .NET. Contribute to restsharp/RestSharp development by creating an account on GitHub. https://github.com/restsharp/RestSharp ?????????在進(jìn)行軟件開發(fā)的時(shí)侯,你可能經(jīng)常需要使用一些公共的Web Api接口執(zhí)行 CRUD 操作;要

    2024年02月13日
    瀏覽(88)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包