Hoe werk je met XLSX Packaging in C++

Hoe werk je met XLSX Packaging in C++

Aspose.Cells FOSS voor C++ leest en schrijft Excel-bestanden in het .xlsx Open XML-formaat. Intern regelt de XlsxWorkbookSerializer-klasse het laden en opslaan van alle werkboekonderdelen. Deze gids legt uit hoe je de load/save API gebruikt en wat de verpakkingslaag automatisch beheert.

Stapsgewijze handleiding

Stap 1: Stel de build in

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

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

Stap 2: Headers opnemen

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

using namespace Aspose::Cells_FOSS;

Stap 3: Laad een bestaand XLSX-bestand

De Workbook(filePath)-constructor roept intern XlsxWorkbookSerializer::Load aan om alle Open XML-onderdelen uit te pakken:

int main() {
    Workbook workbook("input.xlsx");
    Worksheet& sheet = workbook.GetWorksheets()[0];
    std::string title = sheet.GetCells()["A1"].GetStringValue();
    return 0;
}

Stap 4: Wijzig het Werkboek

Voer alle cel-, stijl- of structurele wijzigingen uit met de standaard API:

sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");

Stap 5: Sla het Werkboek op

Roep Workbook::Save(fileName) aan om alle Open XML-onderdelen terug te pakken in een XLSX-archief:

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

Het formaat wordt afgeleid van de .xlsx-extensie. De XlsxWorkbookSerializer::Save-methode verwerkt het automatisch schrijven van de xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml en xl/sharedStrings.xml onderdelen.


Stap 6: Begrijp wat de verpakkingslaag beheert

U hoeft niet rechtstreeks met de interne verpakkingsmechanismen te communiceren. De serializer verwerkt:

PartBeheerd door
WerkboekstructuurXlsxWorkbookProperties
WerkbladgegevensWorksheetXmlMapper
Stijlen en lettertypenXlsxWorkbookStyles
Gedeelde stringsSharedStringTableXmlMapper
DocumenteigenschappenXlsxDocumentProperties
Gedefinieerde namenXlsxWorkbookDefinedNames

Veelvoorkomende problemen en oplossingen

Bestand wordt opgeslagen, maar opent niet in Excel Zorg ervoor dat het uitvoerbestandspad de .xlsx extensie. Opslaan met een andere extensie kan een niet-erkend bestand opleveren.

Stijlen verloren na round-trip Apply Cell::SetStyle(style) voor het aanroepen Workbook::Save. Stijlen die na opslaan zijn aangepast, worden niet weggeschreven.

Bestand laadt als leeg Controleer of het bestand niet met een wachtwoord is beveiligd en een geldig XLSX is (niet .xls or .xlsm). De bibliotheek ondersteunt .xlsx alleen.

Gedefinieerde namen ontbreken na opslaan Gebruik Workbook::EnsureUniqueDefinedName() voordat u opslaat om eventuele scopeconflicten op te lossen.

Geheugen niet vrijgegeven Call workbook.Dispose() na het opslaan om alle interne XLSX-verpakkingsbronnen vrij te geven.

Veelgestelde vragen

Kan ik opslaan in andere formaten dan XLSX?

De huidige v0.1-release ondersteunt alleen opslaan naar XLSX. Laden van CSV wordt ondersteund, maar opslaan naar CSV is niet beschikbaar.

Behoudt de bibliotheek de bestaande delen die ik niet heb gewijzigd?

Ja. De serializer maakt een round-trip van alle delen die hij laadt. Niet-gewijzigde werkbladgegevens, stijlen en gedefinieerde namen worden bij het opslaan bewaard.

Kan ik de ruwe XML van een werkmaponderdeel inspecteren?

De XmlDocument::SaveToUtf8()-methode serialiseert een XML-document naar een string. Directe toegang tot XLSX-archiefonderdelen wordt echter niet blootgesteld in de publieke API. Gebruik XmlDocument voor aangepaste XML-verwerking.

Is er een streaming API voor grote bestanden?

Nee. De huidige release laadt de volledige werkmap in het geheugen. Voor zeer grote bestanden kun je overwegen je verwerking op te delen in kleinere werkmappen.

Wat gebeurt er als ik hetzelfde bestand overschrijf dat ik heb geladen?

Dit wordt ondersteund. De bibliotheek schrijft naar een nieuwe interne buffer voordat het bestand op schijf wordt overschreven, zodat opslaan op de plaats de bron niet beschadigt.

Zie ook

 Nederlands