Wie man mit XLSX-Paketierung in C++ arbeitet
Aspose.Cells FOSS für C++ liest und schreibt Excel-Dateien im .xlsx Open XML-Format. Intern orchestriert die Klasse XlsxWorkbookSerializer das Laden und Speichern aller Arbeitsmappen-Teile. Dieser Leitfaden erklärt, wie man das Lade-/Speicher-API verwendet und was die Verpackungsebene automatisch verwaltet.
Schritt-für-Schritt-Anleitung
Schritt 1: Build einrichten
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)Schritt 2: Header einbinden
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;Schritt 3: Eine vorhandene XLSX-Datei laden
Der Workbook(filePath)-Konstruktor ruft intern XlsxWorkbookSerializer::Load auf, um alle Open XML-Teile zu entpacken:
int main() {
Workbook workbook("input.xlsx");
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string title = sheet.GetCells()["A1"].GetStringValue();
return 0;
}Schritt 4: Arbeitsmappe ändern
Nehmen Sie beliebige Zell-, Stil- oder Strukturänderungen mit dem Standard API vor:
sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");Schritt 5: Arbeitsmappe speichern
Rufen Sie Workbook::Save(fileName) auf, um alle offenen XML-Teile wieder in ein XLSX-Archiv zu packen:
workbook.Save("output.xlsx");
workbook.Dispose();Das Format wird aus der .xlsx-Erweiterung abgeleitet. Die XlsxWorkbookSerializer::Save-Methode übernimmt das Schreiben der xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml und xl/sharedStrings.xml Teile automatisch.
Schritt 6: Verstehen, was die Verpackungsebene verwaltet
Sie müssen nicht direkt mit den internen Vorgängen der Verpackung interagieren. Der Serializer übernimmt:
| Part | Verwaltet von |
|---|---|
| Arbeitsmappenstruktur | XlsxWorkbookProperties |
| Arbeitsblattdaten | WorksheetXmlMapper |
| Stile und Schriftarten | XlsxWorkbookStyles |
| Gemeinsame Zeichenketten | SharedStringTableXmlMapper |
| Dokumenteigenschaften | XlsxDocumentProperties |
| Definierte Namen | XlsxWorkbookDefinedNames |
Häufige Probleme und Lösungen
Datei wird gespeichert, öffnet sich jedoch nicht in Excel Stellen Sie sicher, dass der Ausgabedateipfad die .xlsx Erweiterung verwendet. Das Speichern mit einer anderen Erweiterung kann zu einer nicht erkannten Datei führen.
Stile nach Rundlauf verloren Apply Cell::SetStyle(style) vor dem Aufruf Workbook::Save. Nach dem Speichern geänderte Stile werden nicht geschrieben.
Datei wird leer geladen Stellen Sie sicher, dass die Datei nicht passwortgeschützt ist und ein gültiges XLSX (nicht .xls or .xlsm). Die Bibliothek unterstützt .xlsx nur.
Definierte Namen nach dem Speichern fehlen Verwenden Workbook::EnsureUniqueDefinedName() vor dem Speichern, um etwaige Geltungsbereichskonflikte zu lösen.
Speicher nicht freigegeben Call workbook.Dispose() nach dem Speichern, um alle internen XLSX-Paketierungsressourcen freizugeben.
Häufig gestellte Fragen
Kann ich in anderen Formaten als XLSX speichern?
Die aktuelle v0.1-Version unterstützt nur das Speichern im XLSX-Format. Das Laden von CSV wird unterstützt, aber das Speichern als CSV ist nicht verfügbar.
Behält die Bibliothek die vorhandenen Teile bei, die ich nicht geändert habe?
Ja. Der Serializer führt für alle geladenen Teile einen Round-Trip durch. Nicht veränderte Arbeitsblattdaten, Stile und definierte Namen werden beim Speichern erhalten.
Kann ich das rohe XML eines Arbeitsmappen-Teils einsehen?
Die XmlDocument::SaveToUtf8()-Methode serialisiert ein XML-Dokument in einen String. Der direkte Zugriff auf XLSX-Archivteile wird jedoch in der öffentlichen API nicht bereitgestellt. Verwenden Sie XmlDocument für die benutzerdefinierte XML-Verarbeitung.
Gibt es ein Streaming-API für große Dateien?
Nein. Die aktuelle Version lädt die gesamte Arbeitsmappe in den Speicher. Bei sehr großen Dateien sollten Sie Ihre Verarbeitung in kleinere Arbeitsmappen aufteilen.
Was passiert, wenn ich dieselbe Datei, die ich geladen habe, überschreibe?
Dies wird unterstützt. Die Bibliothek schreibt in einen neuen internen Puffer, bevor sie die Datei auf der Festplatte überschreibt, sodass das Speichern an Ort und Stelle die Quelle nicht beschädigt.