Introduktion

Kalkylbladsadministration är den del av Aspose.Cells FOSS för C++ som de flesta program först berör: Workbook som äger filen, Worksheet-objekten i den och Cells-samlingen som innehåller värden, formler och formatering. Detta inlägg går igenom den ytan i större detalj än en allmän introduktion — hur arbetsböcker och kalkylblad skapas och navigeras, hur cellvärden och formler läses och skrivs, hur Style, Font, Color och Borders kombineras för att formatera utdata, och hur PageSetup, Hyperlink, DefinedName och Validation lägger till struktur kring det råa rutnätet av celler.

Varje klass som behandlas här är en del av den inbyggda C++ API som deklareras under aspose/cells_foss/-rubriker. Det finns ingen COM-interoperabilitet och inget beroende av att Microsoft Excel är installerat — biblioteket läser och skriver .xlsx-paketformatet direkt, vilket också förklarar varför den aktuella versionen endast stöder .xlsx, både vid inläsning och sparning.

Exemplen nedan bygger på varandra: en arbetsbok skapas, kalkylblad och celler fylls, format appliceras, och filen sparas och läses in igen för att bekräfta hela processen. All kod är anpassad från bibliotekets egna kompatibilitets-, guld- och enhetstestsviter, så den återspeglar operationer som körs mot verklig .xlsx-utdata.


Viktiga funktioner

Hantera arbetsböcker och kalkylblad

En Workbook startar med ett kalkylblad i sin WorksheetCollection. Kalkylblad läggs till med Add(), söks upp efter index eller namn, och byts namn med SetName(). WorksheetCollection spårar också vilket blad som är aktivt:

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

using namespace Aspose::Cells_FOSS;

Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Data");

int summaryIndex = workbook.GetWorksheets().Add("Summary");
workbook.GetWorksheets().SetActiveSheetIndex(0);

int sheetCount = workbook.GetWorksheets().GetCount(); // 2

Sparande och återladdning går via samma Workbook-typ. Workbook::Save() accepterar en filsökväg, och en Workbook kan konstrueras direkt från en sökväg eller från en minnesbuffer med byte, vilket rundresar cellvärden och formler:

workbook.Save("report.xlsx");

Workbook loaded("report.xlsx");
Worksheet& reloadedSheet = loaded.GetWorksheets()["Data"];

Cellvärden och formler

Cells, nådd via Worksheet::GetCells(), indexerar celler med A1-stil referens. Cell::PutValue() accepterar strängar, heltal, dubbla och booleska, SetFormula() lagrar en Excel-formelsträng, och GetValue() returnerar en CellValue med typade åtkomstmetoder (AsString(), AsInteger(), AsDouble(), AsBool(), AsDateTime()):

Cells& cells = sheet.GetCells();
cells["A1"].PutValue("Category");
cells["B1"].PutValue("Amount");
cells["A2"].PutValue("Travel");
cells["B2"].PutValue(482.50);
cells["A3"].PutValue("Supplies");
cells["B3"].PutValue(129.99);
cells["B4"].SetFormula("=SUM(B2:B3)");

CellValue amount = cells["B2"].GetValue();
if (amount.IsDouble()) {
    double value = amount.AsDouble();
}

std::string formula = cells["B4"].GetFormula();

Cell::GetType() rapporterar den lagrade CellValueType (Blank, String, Number, Boolean, DateTime eller Formula), och GetDisplayStringValue() returnerar värdet formaterat på det sätt det skulle visas i Excel, med hänsyn till vilket talformat som tillämpas via Style.

Formatering med Style, Font, Color och Borders

Cell::GetStyle() returnerar ett Style-objekt som kan modifieras och återanvändas med SetStyle(). Style exponerar en Font, en Borders-uppsättning, fyllningsmönster och färg, justering samt talformat:

#include "aspose/cells_foss/Style.h"
#include "aspose/cells_foss/Color.h"

Cell headerCell = sheet.GetCells()["A1"];
Style style = headerCell.GetStyle();

Font font = style.GetFont();
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
style.SetFont(font);

style.SetPattern(FillPattern::Solid);
style.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
style.SetHorizontalAlignment(HorizontalAlignmentType::Center);

Borders borders = style.GetBorders();
Border bottomBorder = borders.GetBottom();
bottomBorder.SetLineStyle(BorderStyleType::Thin);
borders.SetBottom(bottomBorder);
style.SetBorders(borders);

style.SetNumberFormat("#,##0.00");
headerCell.SetStyle(style);

Style är en värdetyp: att läsa tillbaka den med GetStyle() speglar vad som senast sattes med SetStyle(), vilket gör det enkelt att bygga en stil och tillämpa den över en rubrikrad eller ett intervall av dataceller.

Sidinställning och utskriftskonfiguration

Worksheet::GetPageSetup() returnerar ett PageSetup-objekt som täcker pappersstorlek, orientering, marginaler, skalning, utskriftsrubriker och sidbrytningar:

#include "aspose/cells_foss/PageSetup.h"

PageSetup& pageSetup = sheet.GetPageSetup();
pageSetup.SetOrientation(PageOrientationType::Landscape);
pageSetup.SetPaperSize(PaperSizeType::PaperA4);
pageSetup.SetFitToPagesWide(1);
pageSetup.SetFitToPagesTall(0);
pageSetup.SetPrintArea("$A$1:$D$20");
pageSetup.SetPrintTitleRows("$1:$1");
pageSetup.SetLeftMargin(0.5);
pageSetup.SetCenterFooter("Page &P of &N");
pageSetup.AddHorizontalPageBreak(20);

Marginaler finns både i råa enheter (GetLeftMargin()) och tum (GetLeftMarginInch()), och GetHorizontalPageBreaks() / GetVerticalPageBreaks() returnerar de sidbrytningspositioner som för närvarande är inställda på bladet.

Hyperlänkar, definierade namn och datavalidering

Worksheet::GetHyperlinks() returnerar ett HyperlinkCollection. Add() tar en målcell eller ett område plus en adress och returnerar den nya hyperlänkens index, vilket används för att hämta Hyperlink-objektet för ytterligare ändringar:

#include "aspose/cells_foss/Hyperlink.h"

sheet.GetCells()["A1"].PutValue("Documentation");
int linkIndex = sheet.GetHyperlinks().Add("A1", 1, 1, "https://example.com/docs");
Hyperlink link = sheet.GetHyperlinks()[linkIndex];
link.SetTextToDisplay("Documentation");
link.SetScreenTip("Open the docs site");

Workbook::GetDefinedNames() hanterar namngivna områden på samma sätt — Add() returnerar ett index i DefinedNameCollection:

#include "aspose/cells_foss/DefinedName.h"

int nameIndex = workbook.GetDefinedNames().Add("Total", "=Data!$B$2:$B$3");
DefinedName total = workbook.GetDefinedNames()[nameIndex];
total.SetComment("Sum of tracked expenses");

Worksheet::GetValidations() följer samma samlingsmönster för datavalideringsregler, begränsade till en CellArea:

#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"

int ruleIndex = sheet.GetValidations().Add(CellArea::CreateCellArea("B2", "B3"));
Validation amountRule = sheet.GetValidations()[ruleIndex];
amountRule.SetType(ValidationType::Decimal);
amountRule.SetOperator(OperatorType::GreaterThan);
amountRule.SetFormula1("0");
amountRule.SetErrorTitle("Invalid Amount");
amountRule.SetErrorMessage("Enter a positive number");

Dokumentegenskaper och arbetsbokinställningar

Workbook::GetDocumentProperties() exponerar de grundläggande och utökade OOXML-metadatafälten (titel, författare, företag, chef och liknande), och Workbook::GetSettings() styr arbetsbokens beteende på arbetsboksnivå, såsom datumssystemet:

#include "aspose/cells_foss/DocumentProperties.h"

workbook.GetDocumentProperties().SetCompany("Example Corp");
workbook.GetDocumentProperties().SetManager("Finance Team");

workbook.GetSettings().SetDate1904(false);

Dessa värden går igenom spara och ladda om på samma sätt som cellinnehåll, vilket är användbart för rapporter som behöver konsekvent metadata över genererade filer.


Snabbstart

Aspose.Cells FOSS för C++ byggs från källkod med CMake. Klona repot och antingen lägg till det som en underkatalog eller hämta det med FetchContent:

git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git
cmake_minimum_required(VERSION 3.15)
project(MyProject CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)

add_executable(MyApp main.cpp)
target_link_libraries(MyApp PRIVATE Aspose.Cells.Foss.Cpp)

Ett minimalt exempel på kalkylblads-hantering — skapa, formatera, spara och ladda om:

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

using namespace Aspose::Cells_FOSS;

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

    Cells& cells = sheet.GetCells();
    cells["A1"].PutValue("Category");
    cells["B1"].PutValue("Amount");
    cells["A2"].PutValue("Travel");
    cells["B2"].PutValue(482.50);
    cells["A3"].PutValue("Supplies");
    cells["B3"].PutValue(129.99);
    cells["B4"].SetFormula("=SUM(B2:B3)");

    workbook.Save("expenses.xlsx");

    Workbook loaded("expenses.xlsx");
    Cells& loadedCells = loaded.GetWorksheets()["Expenses"].GetCells();
    double total = loadedCells["B4"].GetValue().AsDouble();

    return 0;
}

Stödda format

FormatFiländelseLäsSkriv
Xlsx.xlsx✓✓

LoadFormat och SaveFormat exponerar båda ett enda Xlsx-värde i denna version; Workbook(path)- och Workbook(bytes)-konstruktörerna laddar .xlsx-indata, och Workbook::Save() skriver .xlsx-utdata till en sökväg, en ström eller en minnesbuffert.


Öppen källkod & licensiering

Aspose.Cells FOSS för C++ släpps under MIT-licensen. Källkoden finns tillgänglig på GitHub, och biblioteket kan användas, modifieras och redistribueras i kommersiella och öppna källkodsprojekt utan körningsavgifter.


Komma igång

Relaterade resurser