Speichern und Exportieren von Dokumenten
Speichern und Exportieren von Dokumenten
Document.Save schreibt ein Dokument in eine Datei oder einen Stream in einem Zielformat. Das Format wird entweder aus einer Dateierweiterung abgeleitet, explizit als SaveFormat-Wert angegeben oder durch eine SaveOptions-Unterklasse gesteuert — OoxmlSaveOptions, MarkdownSaveOptions oder TxtSaveOptions — für format-spezifische Kontrolle. Dieser Leitfaden behandelt die Save-Überladungen, das SaveFormat-Enum, OOXML-Speicheroptionen, den Export nach Markdown und Klartext sowie das Erkennen eines Formats vor der Konvertierung.
Speichern mit Document.Save
Der einfachste Aufruf, Document.Save(fileName), leitet das Zielformat aus der Dateierweiterung ab. Save(fileName, saveFormat) macht das Format unabhängig von der Erweiterung explizit, und Save(fileName, saveOptions) (oder die entsprechenden Stream-Überladungen) akzeptiert eine SaveOptions-Unterklasse für format-spezifische Einstellungen. SaveOptions.CreateSaveOptions(saveFormat) ist eine statische Fabrik, die die passende Optionsunterklasse für ein gegebenes SaveFormat zurückgibt, wobei deren Vorgabewerte bereits gesetzt sind.
Auswahl eines Formats mit SaveFormat
Das SaveFormat-Enum listet jeden vom Bibliothek erkannten Speicherformat-Bezeichner auf. Document.Save schreibt vollständig sowohl zu als auch von den Kern-Dokumentformaten dieser Edition — DOCX, DOCM, DOTX, DOTM und Flat OPC (sowie dessen makroaktivierten und Vorlagenvarianten) — sowie Markdown und Klartext. FileFormatUtil.SaveFormatToExtension(saveFormat) und ExtensionToSaveFormat(extension) konvertieren zwischen dem Enum und einem Dateierweiterungs-String.
Einige SaveFormat-Werte existieren im Enum für API-Vollständigkeit, entsprechen jedoch Formaten, für die diese reduzierte Open-Source-Edition keinen funktionierenden Leser oder Schreiber implementiert — der Versuch, in eines dieser Formate zu speichern, erzeugt eine Ausgabe, die nicht dem Quelldokument entspricht. Bleiben Sie bei den oben genannten Formaten für zuverlässiges Round-Trip-Verfahren.
OOXML-Optionen: DOCX, DOCM, DOTX, DOTM und Flat OPC
OoxmlSaveOptions konfiguriert das Speichern in eines der Open XML-Formate. Seine SaveFormat-Eigenschaft wählt die zu schreibende spezifische Variante aus; Password legt ein offenes Passwort für die gespeicherte Datei fest (unabhängig von den Bearbeitungsbeschränkungen von Document.Protect); Compliance wählt die OOXML-Striktheitsstufe; und CompressionLevel / Zip64Mode steuern das zugrunde liegende ZIP-Packaging. Erstelle ein solches mit new OoxmlSaveOptions(saveFormat) oder über SaveOptions.CreateSaveOptions(saveFormat).
Export nach Markdown
MarkdownSaveOptions steuert einen Markdown-Export: ListExportMode und LinkExportMode bestimmen, wie Listen und Hyperlinks gerendert werden, ImagesFolder / ImagesFolderAlias legen fest, wo extrahierte Bilder geschrieben und wie sie referenziert werden, ExportImagesAsBase64 bettet sie stattdessen inline ein, und TableContentAlignment beeinflusst das erzeugte Tabellen-Markup. Übergib eine MarkdownSaveOptions-Instanz an Document.Save(fileName, saveOptions) mit einem .md-Dateinamen oder setze ihr SaveFormat explizit.
Export nach Klartext
TxtSaveOptions (über seine Basis TxtSaveOptionsBase, gemeinsam mit MarkdownSaveOptions) steuert den Klartext-Export: Encoding legt die Zeichenkodierung fest, ParagraphBreak legt die Zeilenendezeichenfolge fest, MaxCharactersPerLine bricht lange Zeilen um, SimplifyListLabels normalisiert Aufzählungszeichen/-zahlen zu einfachen Zeichen, und PreserveTableLayout versucht, Tabellenspalten mithilfe von Leerzeichen auszurichten.
Erkennen eines Formats vor dem Konvertieren
Bevor du eine Datei konvertierst, deren Format du noch nicht kennst, liefert FileFormatUtil.DetectFileFormat(fileName) ein FileFormatInfo mit dem erkannten LoadFormat zurück. Kombiniere dies mit FileFormatUtil.LoadFormatToSaveFormat(loadFormat), um zu entscheiden, ob ein Rundlauf durch die von dieser Ausgabe unterstützten Formate möglich ist, bevor du Document.Save versuchst.
Tipps und bewährte Verfahren
- Verwenden Sie
Save(fileName, saveOptions)anstelle der einfachenSave(fileName, saveFormat)-Überladung, wann immer Sie formatbezogenes Verhalten wie das Rendern von Markdown-Listen oder die OOXML-Komprimierung steuern müssen. - Setzen Sie
OoxmlSaveOptions.Passwordfür eine mit offenem Passwort geschützte Datei; das ist getrennt vonDocument.Protect, das die Bearbeitung einschränkt, aber die Datei nicht verschlüsselt. - Wählen Sie
MarkdownSaveOptions.ExportImagesAsBase64für eine einzelne, eigenständige Markdown-Datei oderImagesFolder, wenn Sie einen Ordner mit extrahierten Bilddateien neben dem Markdown möchten. - Rufen Sie
SaveOptions.CreateSaveOptions(saveFormat)auf, anstatt die konkrete Optionsklasse manuell auszuwählen, wenn das Zielformat zur Laufzeit ermittelt wird. - Überprüfen Sie ein Zielformat mit
FileFormatUtilvor der Konvertierung, anstatt sich ausschließlich auf die Dateierweiterung zu verlassen, die falsch oder irreführend sein kann.
Häufige Probleme
| Problem | Ursache | Behebung |
|---|---|---|
Save(fileName) wählt das falsche Format | Die Dateierweiterung stimmt nicht mit dem beabsichtigten Format überein | Verwenden Sie Save(fileName, saveFormat) oder Save(fileName, saveOptions), um das Format ausdrücklich festzulegen |
| Gespeicherte OOXML-Datei lässt sich nicht mit einem Passwort öffnen | OoxmlSaveOptions.Password wurde vor dem Speichern nicht gesetzt | Erstelle ein OoxmlSaveOptions, setze Password und übergebe es an Save |
| Markdown-Export verteilt Bilddateien unerwartet | Standard-MarkdownSaveOptions-Verhalten extrahiert Bilder in Dateien | Setze ExportImagesAsBase64 = true für eine einzelne, eigenständige Datei oder setze ImagesFolder, um zu steuern, wohin die Bilder gehen |
| Plain-Text-Export verliert die Tabellenspaltenausrichtung | TxtSaveOptions.PreserveTableLayout bleibt bei seinem Standard | Setze PreserveTableLayout = true vor dem Speichern |
FAQ
Wie speichere ich ein Dokument in einem bestimmten Format, unabhängig von seiner Dateierweiterung?
Rufen Sie Save(fileName, saveFormat) mit einem expliziten SaveFormat-Wert auf oder Save(fileName, saveOptions) mit einer passenden SaveOptions-Unterklasse.
Welche Formate liest und schreibt diese Ausgabe in beide Richtungen?
DOCX, DOCM, DOTX, DOTM, Flat OPC (plus seine Makro-aktivierten und Vorlagen-Varianten), Markdown und Plain-Text.
Wie schütze ich eine gespeicherte Datei mit einem Passwort?
Setzen Sie Password auf einer OoxmlSaveOptions-Instanz und übergeben Sie sie an Document.Save(fileName, saveOptions).
Wie steuere ich die Zeilenenden in einer exportierten Textdatei?
Setzen Sie ParagraphBreak auf einer TxtSaveOptions-Instanz, bevor Sie speichern.
Wie prüfe ich, welches Format eine Datei hat, bevor ich sie konvertiere?
Rufe FileFormatUtil.DetectFileFormat(fileName) auf und lese das zurückgegebene FileFormatInfo.LoadFormat.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
Document.Save | Schreibt das Dokument in eine Datei, einen Stream oder ein Ausgabeziel in einem gewählten Format. |
SaveFormat | Enum, das das Zielformat für einen Speicher-Vorgang identifiziert. |
SaveOptions | Abstrakte Basisklasse für format-spezifische Speicher-Konfiguration; CreateSaveOptions(saveFormat) gibt die passende Unterklasse zurück. |
OoxmlSaveOptions | Optionen für DOCX, DOCM, DOTX, DOTM und Flat OPC — Passwort, Konformität, Komprimierung. |
MarkdownSaveOptions | Optionen für den Markdown-Export — List-/Link-Darstellung, Bildverarbeitung. |
TxtSaveOptions / TxtSaveOptionsBase | Optionen für den Klartext-Export — Kodierung, Zeilenumbrüche, Tabellenlayout. |
FileFormatUtil.DetectFileFormat | Erkennt das Format einer Datei, bevor sie geladen oder konvertiert wird. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | Konvertiert zwischen einem SaveFormat-Wert und einer Dateierweiterung. |