Hur du arbetar med XLSX-paketering i C++

Hur du arbetar med XLSX-paketering i C++

Aspose.Cells FOSS för C++ läser och skriver Excel-filer i .xlsx Open XML-formatet. Internt koordinerar klassen XlsxWorkbookSerializer class inläsning och sparande av alla arbetsbokdelar. Denna guide förklarar hur man använder load/save API och vad paketeringslagret hanterar automatiskt.

Steg-för-steg-guide

Steg 1: Ställ in bygget

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)

Steg 2: Inkludera Headers

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

using namespace Aspose::Cells_FOSS;

Steg 3: Ladda en befintlig XLSX-fil

Konstruktorn Workbook(filePath) anropar XlsxWorkbookSerializer::Load internt för att packa upp alla Open XML-delar:

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

Steg 4: Ändra arbetsboken

Gör eventuella cell-, stil- eller strukturella ändringar med den standard API:

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

Steg 5: Spara arbetsboken

Anropa Workbook::Save(fileName) för att packa alla Open XML-delar tillbaka i ett XLSX-arkiv:

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

Formatet härleds från .xlsx-tillägget. Metoden XlsxWorkbookSerializer::Save hanterar automatiskt skrivning av delarna xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml och xl/sharedStrings.xml.


Steg 6: Förstå vad paketlagret hanterar

Du behöver inte interagera med paketets interna struktur direkt. Serialisören hanterar:

PartHanteras av
ArbetsboksstrukturXlsxWorkbookProperties
ArbetsbladdataWorksheetXmlMapper
Stilar och teckensnittXlsxWorkbookStyles
Delade strängarSharedStringTableXmlMapper
DokumentegenskaperXlsxDocumentProperties
Definierade namnXlsxWorkbookDefinedNames

Vanliga problem och lösningar

Filen sparas men öppnas inte i Excel Se till att sökvägen för utdatafilen använder .xlsx filändelse. Att spara med en annan filändelse kan resultera i en okänd fil.

Stilar försvinner efter rundresa Apply Cell::SetStyle(style) innan anrop Workbook::Save. Stilar som ändrats efter sparning skrivs inte.

Filen laddas som tom Verifiera att filen inte är lösenordsskyddad och är en giltig XLSX (inte .xls or .xlsm). Biblioteket stöder .xlsx endast.

Definierade namn saknas efter sparning Använd Workbook::EnsureUniqueDefinedName() innan du sparar för att lösa eventuella scopekonflikter.

Minne frigörs inte Call workbook.Dispose() efter att ha sparat för att frigöra alla interna XLSX-paketeringsresurser.

Vanliga frågor

Kan jag spara till andra format än XLSX?

Den aktuella v0.1-utgåvan stöder endast sparande till XLSX. Inläsning av CSV stöds men att spara till CSV är inte tillgängligt.

Behåller biblioteket befintliga delar som jag inte har ändrat?

Ja. Serialiseraren round-trippar alla delar den laddar. Omodifierad bladdata, stilar och definierade namn bevaras vid sparande.

Kan jag inspektera den råa XML för en arbetsboksdel?

Metoden XmlDocument::SaveToUtf8() serialiserar ett XML-dokument till en sträng. Direkt åtkomst till XLSX-arkivdelar exponeras dock inte i den offentliga API. Använd XmlDocument för anpassad XML-behandling.

Finns det en streaming API för stora filer?

Nej. Den aktuella utgåvan laddar hela arbetsboken i minnet. För mycket stora filer, överväg att dela upp din bearbetning i mindre arbetsböcker.

Vad händer om jag sparar över samma fil som jag laddade?

Detta stöds. Biblioteket skriver till en ny intern buffert innan det skriver över filen på disk, så en sparning på plats korruptar inte källan.

Se även

 Svenska