Hoe een Spreadsheet-gegevensmodel te maken en te vullen in C++

Hoe een Spreadsheet-gegevensmodel te maken en te vullen in C++

Deze gids laat zien hoe je een werkmap maakt, cellen vult met waarden en formules, stijlen toepast en opslaat als een spreadsheet-bestand met behulp van de Aspose.Cells FOSS voor C++ bibliotheek. De kernklassen die betrokken zijn, zijn Workbook, Worksheet, Cell en Style.

Stapsgewijze gids

Stap 1: De build opzetten

Voeg de Cells FOSS-bibliotheek toe aan je CMake-project en link het Aspose.Cells.Foss.Cpp-doel:

cmake_minimum_required(VERSION 3.15)
project(CreateSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(CreateSpreadsheet main.cpp)
target_link_libraries(CreateSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)

Stap 2: Headers opnemen en namespace instellen

Neem de per-klasse headers van aspose/cells_foss/ op voor elke klasse die je gebruikt (Workbook.h, Worksheet.h, Cell.h, Style.h, Font.h, Color.h, CellArea.h), open vervolgens de Aspose::Cells_FOSS namespace:

using namespace Aspose::Cells_FOSS;

Stap 3: Maak een werkmap en geef het blad een naam

Instantieer Workbook, haal het eerste werkblad op via GetWorksheets()[0], en stel de weergavenaam in:

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

Stap 4: Voeg celwaarden toe

Roep GetCells()["A1"].PutValue() aan om tekstreeksen, numerieke waarden en booleans in individuele cellen te schrijven op adres:

sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["A3"].PutValue("Gadget");
sheet.GetCells()["B3"].PutValue(24.99);

Stap 5: Stel een formule in

Roep SetFormula() aan op een cel om een Excel-compatibele formulestring op te slaan; de formule wordt door Excel geëvalueerd wanneer het bestand wordt geopend:

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");

Stap 6: Pas celopmaak toe

Haal de stijl op met Cell::GetStyle(), pas deze aan, en pas toe met Cell::SetStyle(style):

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);
sheet.GetCells()["B1"].SetStyle(headerStyle);

Stap 7: Cellen samenvoegen

Gebruik Cells::Merge om een bereik te combineren tot één enkele cel:

CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);

Stap 8: Werkmap opslaan

Roep workbook.Save() aan met een bestandsnaam om de spreadsheet als een XLSX-bestand te schrijven, roep vervolgens Dispose() aan om bronnen vrij te geven:

workbook.Save("sales.xlsx");
workbook.Dispose();

Veelvoorkomende problemen en oplossingen

Stijl niet toegepast na opslaan Altijd aanroepen Cell::SetStyle(style) na het aanpassen van het stijlobject. Het rechtstreeks wijzigen van de geretourneerde stijl past de wijzigingen niet toe; je moet deze expliciet terug instellen.

Formule opgeslagen als tekenreeksliteral Gebruik SetFormula("=SUM(...)") not PutValue("=SUM(...)"). PutValue behandelt het argument als een letterlijke tekenreeks, niet als een formule.

Samengevoegde cel wordt niet correct weergegeven Zorg ervoor dat de samenvoegparameters (rij, kolom, rijAantal, kolomAantal) het beoogde bereik correct omvatten. Overlappende samenvoegingen worden niet ondersteund.

Werkmap heeft geen bladen na constructie Er wordt altijd een standaardblad aangemaakt door Workbook(). Call GetWorksheets()[0] om er toegang toe te krijgen.

Dispose niet aangeroepen Roep altijd aan workbook.Dispose() om bronnen vrij te geven, vooral in langdurige toepassingen.

Veelgestelde vragen

Kan ik meerdere werkbladen aan één werkmap toevoegen?

Ja. Gebruik Workbook::GetWorksheets() om de collectie te benaderen en bladen programmatisch toe te voegen. Zorg ervoor dat elk blad een unieke naam heeft met Workbook::EnsureUniqueSheetName().

Hoe stel ik een getalnotatie in voor een cel?

Gebruik Style::SetNumberFormat(format) voordat je Cell::SetStyle(style) aanroept. Opmaaktekenreeksen volgen de standaard Excel-getalnotatiesyntaxis.

Kan ik dezelfde stijl op meerdere cellen toepassen?

Ja. Haal de stijl één keer op, wijzig deze, en roep vervolgens SetStyle(style) aan op elke doelcel.

Wordt de formule geëvalueerd bij het opslaan?

Nee. Formule-evaluatie vindt plaats in Excel of een compatibele lezer wanneer het bestand wordt geopend. De bibliotheek schrijft de formule-string naar de cel.

Hoeveel rijen en kolommen kan een werkblad bevatten?

Elk werkblad bevat gegevens over het volledige raster van rijen en kolommen, volgens de standaard spreadsheet-afmetingen.

Zie ook

 Nederlands