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ší:
| Part | Spravováno |
|---|---|
| Struktura sešitu | XlsxWorkbookProperties |
| Data listu | WorksheetXmlMapper |
| Styly a písma | XlsxWorkbookStyles |
| Sdílené řetězce | SharedStringTableXmlMapper |
| Vlastnosti dokumentu | XlsxDocumentProperties |
| Definovaná jména | XlsxWorkbookDefinedNames |
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.