Introduktion
Aspose.Cells FOSS för C++ är ett open-source-bibliotek för att skapa, läsa in, redigera och spara Excel .xlsx-arbetsböcker från native C++-kod, utan att kräva Microsoft Excel eller någon COM-automation. Det integreras i en CMake-baserad byggprocess som ett källkods-bibliotek — det finns inga externa körtidsberoenden att installera eller länka mot utöver C++ standardbiblioteket.
Biblioteket är licensierat under MIT och riktar sig mot C++17. Det byggs med add_subdirectory eller FetchContent från en git-klon, eftersom det inte distribueras via en paketchef som vcpkg eller Conan. API-ytan är organiserad kring en Workbook som äger en WorksheetCollection, kalkylblad som exponerar ett Cells-objekt för cellnivååtkomst, och en Style-fasad för teckensnitt, fyllningar och kanter. Om du bygger backend-tjänster, rapportgeneratorer eller data-export-pipelines i C++ och behöver producera eller läsa .xlsx-filer utan att anropa Excel, ger detta bibliotek dig ett native-sätt att göra det.
Aspose.Cells FOSS finns även tillgängligt för .NET, Go, Java, Python, Rust och TypeScript. C++-biblioteket följer samma tillvägagångssätt som resten av familjen: en XLSX-inriktad API baserad på vad som faktiskt implementerats, under en permissiv licens.
Vad som ingår
Struktur för arbetsbok och kalkylblad
En Workbook startar med ett kalkylblad. Ytterligare blad skapas med WorksheetCollection::Add, och befintliga blad nås via index eller namn genom samlingens indexerare. Varje Worksheet exponerar sina celler genom 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");
Cellvärden, formler och talformat
Cell::PutValue har överlagringar för strängar, heltal, dubbelprecision, booleska och andra värdetyper, så ingen manuell strängkonvertering krävs. SetFormula accepterar en formel med eller utan en inledande = och normaliserar den; GetType rapporterar sedan en CellValueType av Formula. Talformat appliceras via Style::SetNumberFormat och påverkar endast den visningstext som returneras av GetDisplayStringValue — det underliggande lagrade värdet förblir oförändrat.
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"
Styling med teckensnitt, fyllningar och kanter
Cell::GetStyle() och SetStyle() läser och skriver ett Style-objekt som grupperar Font, Borders och fyllningsinställningar. Färger konstrueras med Color::FromArgb, och fyllningsmönster sätts via 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);
Datavalidering och villkorsstyrd formatering
ValidationCollection::Add begränsar en Validation-regel till en CellArea; att sätta dess ValidationType till List med ett Formula1-värde skapar en rullgardinsmeny i cellen. ConditionalFormattingCollection::Add skapar en formateringsgrupp som är begränsad med AddArea och fylls med AddCondition, som tar en FormatConditionType, en OperatorType och en eller två formler.
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);
Sidinställningar och utskriftslayout
Worksheet::GetPageSetup() returnerar ett PageSetup-objekt som styr papperstorlek, orientering, skalning, utskriftsområde och titelrader/-kolumner för utskrift. Värden valideras vid tilldelning — till exempel, ett SetScale-anrop utanför intervallet kastar ett 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");
Snabbstart
Aspose.Cells FOSS för C++ distribueras inte via en pakethanterare — klona repot och lägg till det i ditt CMake-projekt:
git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git
Lägg till biblioteket som en undermapp i ditt eget CMakeLists.txt och länka mot aspose_cells_foss-målet:
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)
Skapa sedan, formatera och spara en arbetsbok:
#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;
}
Stödda format
| Format | Filändelse | Läsa | Skriva |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX är det enda formatet som den aktuella releasen läser och skriver. Workbook’s fil- och strömkonstruktörer laddar .xlsx data, och Save skriver tillbaka den; LoadFormat och SaveFormat enumar styr explicit formatval på dessa anrop.
Öppen källkod & licensiering
Aspose.Cells FOSS för C++ är licensierad under MIT. Den kompletta källkoden finns tillgänglig på GitHub, och licensen tillåter kommersiell användning, modifiering och vidarefördelning.