Introducere

Aspose.Cells FOSS pentru C++ este o bibliotecă open-source pentru crearea, încărcarea, editarea și salvarea de cărți de lucru Excel .xlsx din cod C++ nativ, fără a necesita Microsoft Excel sau orice automatizare COM. Se integrează într-o construcție bazată pe CMake ca bibliotecă sursă — nu există nicio dependență runtime externă de instalat sau de legat în afara bibliotecii standard C++.

Biblioteca este licențiată sub MIT și vizează C++17. Se compilează cu add_subdirectory sau FetchContent dintr-un clon git, deoarece nu este distribuită printr-un manager de pachete precum vcpkg sau Conan. Suprafața API este organizată în jurul unui Workbook care deține un WorksheetCollection, foi de calcul care expun un obiect Cells pentru acces la nivel de celulă, și o fațadă Style pentru fonturi, umpleri și margini. Dacă dezvoltați servicii backend, generatoare de rapoarte sau conducte de export de date în C++ și aveți nevoie să produceți sau să citiți fișiere .xlsx fără a apela la Excel, această bibliotecă vă oferă o modalitate nativă de a face acest lucru.

Aspose.Cells FOSS este disponibil și pentru .NET, Go, Java, Python, Rust și TypeScript. Biblioteca C++ urmează aceeași abordare ca restul familiei: un API orientat spre XLSX, bazat pe ceea ce este implementat efectiv, sub o licență permisivă.


Ce este inclus

Structura cărții de lucru și a foii de calcul

Un Workbook începe cu o singură foaie de calcul. Foi suplimentare sunt create cu WorksheetCollection::Add, iar foile existente sunt accesate prin index sau prin nume prin indexatorul colecției. Fiecare Worksheet își expune celulele prin GetCells().

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"

using namespace Aspose::Cells_FOSS;

Workbook workbook;
workbook.GetWorksheets()[0].SetName("Data");
workbook.GetWorksheets().Add("Summary");

Worksheet& data = workbook.GetWorksheets()["Data"];
data.GetCells()["A1"].PutValue("Product");
data.GetCells()["B1"].PutValue("Price");

Valori ale celulelor, formule și formate de număr

Cell::PutValue are suprasarcini pentru șiruri, întregi, duble, booleene și alte tipuri de valori, astfel încât nu este necesară conversia manuală a șirurilor. SetFormula acceptă o formulă cu sau fără un = inițial și o normalizează; GetType raportează apoi un CellValueType de Formula. Formatarea numerelor este aplicată prin Style::SetNumberFormat și afectează doar textul afișat returnat de GetDisplayStringValue — valoarea stocată în fundal rămâne neschimbată.

auto& sheet = workbook.GetWorksheets()[0];
auto cell = sheet.GetCells()["B2"];
cell.PutValue(1234.567);

auto style = cell.GetStyle();
style.SetNumberFormat("#,##0.00");
cell.SetStyle(style);

sheet.GetCells()["B3"].SetFormula("B2*2");
// GetFormula() now returns "=B2*2"; GetType() reports CellValueType::Formula

std::cout << cell.GetDisplayStringValue() << std::endl; // "1,234.57"

Stilizare cu fonturi, umpleri și borduri

Cell::GetStyle() și SetStyle() citesc și scriu un obiect Style care grupează Font, Borders și setările de umplere. Culorile sunt construite cu Color::FromArgb, iar modelele de umplere sunt stabilite prin FillPattern.

Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);

Validare a datelor și formatare condiționată

ValidationCollection::Add definește domeniul unei reguli Validation pentru un CellArea; setarea ValidationType la List cu o valoare Formula1 produce un meniu derulant în celulă. ConditionalFormattingCollection::Add creează un grup de formatare care este delimitat cu AddArea și populat cu AddCondition, care primește un FormatConditionType, un OperatorType și una sau două formule.

int validationIndex = sheet.GetValidations().Add(CellArea::CreateCellArea("B1", "B3"));
auto validation = sheet.GetValidations()[validationIndex];
validation.SetType(ValidationType::List);
validation.SetFormula1("\"Open,Closed\"");
validation.SetShowError(true);

int cfIndex = sheet.GetConditionalFormattings().Add();
auto formatting = sheet.GetConditionalFormattings()[cfIndex];
formatting.AddArea(CellArea::CreateCellArea("C1", "C3"));
int conditionIndex = formatting.AddCondition(
    FormatConditionType::CellValue, OperatorType::Between, "1", "9");

auto condition = formatting[conditionIndex];
auto conditionStyle = condition.GetStyle();
conditionStyle.SetPattern(FillPattern::Solid);
conditionStyle.SetForegroundColor(Color::FromArgb(255, 255, 199, 206));
condition.SetStyle(conditionStyle);

Configurare pagină și aspect de tipărire

Worksheet::GetPageSetup() returnează un obiect PageSetup care controlează dimensiunea hârtiei, orientarea, scalarea, zona de tipărire și rândurile/coloanele de titlu de tipărire. Valorile sunt validate la atribuire — de exemplu, un apel SetScale în afara intervalului generează o CellsException.

auto& pageSetup = sheet.GetPageSetup();
pageSetup.SetOrientation(PageOrientationType::Landscape);
pageSetup.SetPaperSize(PaperSizeType::PaperA4);
pageSetup.SetFitToPagesWide(1);
pageSetup.SetFitToPagesTall(3);
pageSetup.SetPrintArea("$A$1:$D$20");
pageSetup.SetPrintTitleRows("$1:$2");

Start rapid

Aspose.Cells FOSS pentru C++ nu este distribuit printr-un manager de pachete — clonează depozitul și adaugă-l în proiectul tău CMake:

git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git

Adaugă biblioteca ca subdirector al propriului tău CMakeLists.txt și leagă-te de ținta aspose_cells_foss:

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)

Apoi creează, stilizează și salvează un registru de lucru:

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
#include "aspose/cells_foss/Style.h"
#include "aspose/cells_foss/Font.h"
#include "aspose/cells_foss/Color.h"

using namespace Aspose::Cells_FOSS;

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    sheet.SetName("Products");

    sheet.GetCells()["A1"].PutValue("Product");
    sheet.GetCells()["B1"].PutValue("Price");
    sheet.GetCells()["A2"].PutValue("Apple");
    sheet.GetCells()["B2"].PutValue(2.99);
    sheet.GetCells()["A3"].PutValue("Orange");
    sheet.GetCells()["B3"].PutValue(1.99);
    sheet.GetCells()["B4"].SetFormula("SUM(B2:B3)");

    Style header = sheet.GetCells()["A1"].GetStyle();
    Font font;
    font.SetBold(true);
    header.SetFont(font);
    sheet.GetCells()["A1"].SetStyle(header);

    workbook.Save("products.xlsx");
    return 0;
}

Formate suportate

FormatExtensieCiteșteScrie
XLSX.xlsx✓✓

XLSX este singurul format pe care versiunea curentă îl citește și scrie. Constructorii de fișiere și fluxuri ai Workbook încarcă date .xlsx, iar Save le scrie înapoi; enum-urile LoadFormat și SaveFormat guvernează selecția explicită a formatului în acele apeluri.


Open Source & Licențiere

Aspose.Cells FOSS pentru C++ este licențiat sub MIT. Codul sursă complet este disponibil pe GitHub, iar licența permite utilizarea comercială, modificarea și redistribuirea.


Începeți

Resurse conexe