Speichern und Exportieren von Dokumenten

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 einfachen Save(fileName, saveFormat)-Überladung, wann immer Sie formatbezogenes Verhalten wie das Rendern von Markdown-Listen oder die OOXML-Komprimierung steuern müssen.
  • Setzen Sie OoxmlSaveOptions.Password für eine mit offenem Passwort geschützte Datei; das ist getrennt von Document.Protect, das die Bearbeitung einschränkt, aber die Datei nicht verschlüsselt.
  • Wählen Sie MarkdownSaveOptions.ExportImagesAsBase64 für eine einzelne, eigenständige Markdown-Datei oder ImagesFolder, 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 FileFormatUtil vor der Konvertierung, anstatt sich ausschließlich auf die Dateierweiterung zu verlassen, die falsch oder irreführend sein kann.

Häufige Probleme

ProblemUrsacheBehebung
Save(fileName) wählt das falsche FormatDie Dateierweiterung stimmt nicht mit dem beabsichtigten Format übereinVerwenden Sie Save(fileName, saveFormat) oder Save(fileName, saveOptions), um das Format ausdrücklich festzulegen
Gespeicherte OOXML-Datei lässt sich nicht mit einem Passwort öffnenOoxmlSaveOptions.Password wurde vor dem Speichern nicht gesetztErstelle ein OoxmlSaveOptions, setze Password und übergebe es an Save
Markdown-Export verteilt Bilddateien unerwartetStandard-MarkdownSaveOptions-Verhalten extrahiert Bilder in DateienSetze ExportImagesAsBase64 = true für eine einzelne, eigenständige Datei oder setze ImagesFolder, um zu steuern, wohin die Bilder gehen
Plain-Text-Export verliert die TabellenspaltenausrichtungTxtSaveOptions.PreserveTableLayout bleibt bei seinem StandardSetze 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/MethodeBeschreibung
Document.SaveSchreibt das Dokument in eine Datei, einen Stream oder ein Ausgabeziel in einem gewählten Format.
SaveFormatEnum, das das Zielformat für einen Speicher-Vorgang identifiziert.
SaveOptionsAbstrakte Basisklasse für format-spezifische Speicher-Konfiguration; CreateSaveOptions(saveFormat) gibt die passende Unterklasse zurück.
OoxmlSaveOptionsOptionen für DOCX, DOCM, DOTX, DOTM und Flat OPC — Passwort, Konformität, Komprimierung.
MarkdownSaveOptionsOptionen für den Markdown-Export — List-/Link-Darstellung, Bildverarbeitung.
TxtSaveOptions / TxtSaveOptionsBaseOptionen für den Klartext-Export — Kodierung, Zeilenumbrüche, Tabellenlayout.
FileFormatUtil.DetectFileFormatErkennt das Format einer Datei, bevor sie geladen oder konvertiert wird.
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormatKonvertiert zwischen einem SaveFormat-Wert und einer Dateierweiterung.

Siehe auch

 Deutsch