Jak pracovat s balíčkováním XLSX v C++

Jak pracovat s balíčkováním XLSX v C++

Aspose.Cells FOSS pro C++ čte a zapisuje soubory Excel v .xlsx formátu Open XML. Interně třída XlsxWorkbookSerializer koordinuje načítání a ukládání všech částí sešitu. Tento průvodce vysvětluje, jak používat load/save API a co vrstva balíčkování spravuje automaticky.

Průvodce krok za krokem

Krok 1: Nastavte sestavení

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)

Krok 2: Zahrňte hlavičky

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

using namespace Aspose::Cells_FOSS;

Krok 3: Načtěte existující soubor XLSX

Konstruktor Workbook(filePath) volá interně XlsxWorkbookSerializer::Load k rozbalení všech částí Open XML:

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

Krok 4: Upravit sešit

Proveďte jakékoli změny buněk, stylu nebo struktury pomocí standardního API:

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

Krok 5: Uložit sešit

Zavolejte Workbook::Save(fileName) k zabalení všech částí Open XML zpět do archivu XLSX:

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

Formát je odvozen z přípony .xlsx. Metoda XlsxWorkbookSerializer::Save automaticky zpracovává zápis částí xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml a xl/sharedStrings.xml.


Krok 6: Porozumět tomu, co spravuje vrstva balení

Nemusíte přímo komunikovat s vnitřními částmi balení. Serializér řeší:

PartSpravováno
Struktura sešituXlsxWorkbookProperties
Data listuWorksheetXmlMapper
Styly a písmaXlsxWorkbookStyles
Sdílené řetězceSharedStringTableXmlMapper
Vlastnosti dokumentuXlsxDocumentProperties
Definovaná jménaXlsxWorkbookDefinedNames

Běžné problémy a opravy

Soubor se uloží, ale neotevře se v Excelu Ujistěte se, že výstupní cesta k souboru používá .xlsx příponu. Uložení s jinou příponou může vést k neznámému souboru.

Styly ztraceny po průchodu tam a zpět Apply Cell::SetStyle(style) před voláním Workbook::Save. Styly upravené po uložení nejsou zapsány.

Soubor se načte jako prázdný Ověřte, že soubor není chráněn heslem a je platný XLSX (ne .xls or .xlsmKnihovna podporuje .xlsx pouze.

Definované názvy chybí po uložení Použijte Workbook::EnsureUniqueDefinedName() před uložením k vyřešení případných konfliktů rozsahu.

Paměť není uvolněna Call workbook.Dispose() po uložení k uvolnění všech interních zdrojů balení XLSX.

Často kladené otázky

Mohu ukládat do formátů jiných než XLSX?

Aktuální verze v0.1 podporuje ukládání pouze do formátu XLSX. Načítání CSV je podporováno, ale ukládání do CSV není k dispozici.

Zachovává knihovna existující části, které jsem neupravil?

Ano. Serializér provádí round-trip všech načtených částí. Nezměněná data listu, styly a definovaná jména jsou při ukládání zachována.

Mohu si prohlédnout surový XML části sešitu?

Metoda XmlDocument::SaveToUtf8() serializuje XML dokument do řetězce. Přímý přístup k částem archivu XLSX však není vystaven v veřejném API. Pro vlastní zpracování XML použijte XmlDocument.

Existuje streamovací API pro velké soubory?

Ne. Aktuální verze načítá celý sešit do paměti. U velmi velkých souborů zvažte rozdělení zpracování na menší sešity.

Co se stane, když uložíte přes stejný soubor, který jsem načetl?

To je podporováno. Knihovna zapíše nejprve do nového interního bufferu, než přepíše soubor na disku, takže uložení na místě nepoškodí zdroj.

Viz také:

 Čeština