Introduzione

Aspose.Cells FOSS per C++ è una libreria open-source per creare, caricare, modificare e salvare cartelle di lavoro Excel .xlsx da codice C++ nativo, senza richiedere Microsoft Excel o alcuna automazione COM. Si integra in una build basata su CMake come libreria sorgente — non vi è alcuna dipendenza runtime esterna da installare o collegare oltre alla libreria standard C++.

La libreria è rilasciata sotto licenza MIT e mira a C++17. Si compila con add_subdirectory o FetchContent da un clone git, poiché non è distribuita tramite un gestore di pacchetti come vcpkg o Conan. La superficie API è organizzata attorno a un Workbook che possiede un WorksheetCollection, fogli di lavoro che espongono un oggetto Cells per l’accesso a livello di cella, e una facciata Style per font, riempimenti e bordi. Se costruisci servizi backend, generatori di report o pipeline di esportazione dati in C++ e hai bisogno di produrre o leggere file .xlsx senza ricorrere a Excel, questa libreria ti offre un modo nativo per farlo.

Aspose.Cells FOSS è disponibile anche per .NET, Go, Java, Python, Rust e TypeScript. La libreria C++ segue lo stesso approccio del resto della famiglia: un API incentrato su XLSX basato su ciò che è effettivamente implementato, sotto una licenza permissiva.


Cosa è incluso

Struttura della Cartella di Lavoro e del Foglio di Lavoro

Un Workbook inizia con un foglio di lavoro. Fogli aggiuntivi vengono creati con WorksheetCollection::Add, e i fogli esistenti sono accessibili per indice o per nome tramite l’indicizzatore della collezione. Ogni Worksheet espone le proprie celle tramite 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 delle Celle, Formule e Formati Numerici

Cell::PutValue ha sovraccarichi per stringhe, interi, double, booleani e altri tipi di valore, quindi non è necessaria alcuna conversione manuale di stringhe. SetFormula accetta una formula con o senza un = iniziale e la normalizza; GetType quindi restituisce un CellValueType di Formula. La formattazione dei numeri viene applicata tramite Style::SetNumberFormat e influisce solo sul testo visualizzato restituito da GetDisplayStringValue — il valore memorizzato sottostante rimane invariato.

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"

Stilizzazione con Font, Riempimenti e Bordi

Cell::GetStyle() e SetStyle() leggono e scrivono un oggetto Style che raggruppa Font, Borders e le impostazioni di riempimento. I colori sono costruiti con Color::FromArgb, e i pattern di riempimento sono impostati tramite 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);

Convalida dei Dati e Formattazione Condizionale

ValidationCollection::Add definisce l’ambito di una regola Validation a un CellArea; impostare il suo ValidationType a List con un valore Formula1 genera un menu a discesa nella cella. ConditionalFormattingCollection::Add crea un gruppo di formattazione che è limitato con AddArea e popolato con AddCondition, che accetta un FormatConditionType, un OperatorType e una o due 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);

Impostazioni di Pagina e Layout di Stampa

Worksheet::GetPageSetup() restituisce un oggetto PageSetup che controlla le dimensioni della carta, l’orientamento, la scala, l’area di stampa e le righe/colonne di titolo di stampa. I valori sono validati al momento dell’assegnazione — per esempio, una chiamata SetScale fuori intervallo genera un 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");

Guida rapida

Aspose.Cells FOSS per C++ non è distribuito tramite un gestore di pacchetti — clona il repository e aggiungilo al tuo progetto CMake:

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

Aggiungi la libreria come sottodirectory del tuo CMakeLists.txt e collegati al target aspose_cells_foss:

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

Quindi crea, formatta e salva una cartella di lavoro:

#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;
}

Formati supportati

FormatoEstensioneLeggiScrivi
XLSX.xlsx✓✓

XLSX è l’unico formato che l’attuale versione legge e scrive. I costruttori file e stream di Workbook caricano i dati .xlsx, e Save li scrive nuovamente; le enum LoadFormat e SaveFormat governano la selezione esplicita del formato in quelle chiamate.


Open Source e Licenze

Aspose.Cells FOSS per C++ è rilasciato sotto licenza MIT. Il codice sorgente completo è disponibile su GitHub, e la licenza permette l’uso commerciale, la modifica e la ridistribuzione.


Guida introduttiva

Risorse correlate