Zapisywanie i eksportowanie dokumentów

Zapisywanie i eksportowanie dokumentów

Zapisywanie i eksportowanie dokumentów

Document.Save zapisuje dokument do pliku lub strumienia w docelowym formacie. Format jest albo wywnioskowany z rozszerzenia pliku, podany explicite jako wartość SaveFormat, albo sterowany przez podklasę SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions lub TxtSaveOptions — w celu kontrolowania specyficznego formatu. Ten przewodnik obejmuje przeciążenia Save, wyliczenie SaveFormat, opcje zapisu OOXML, eksport do Markdown i zwykłego tekstu oraz wykrywanie formatu przed konwersją.


Zapisywanie przy użyciu Document.Save

Najprostsze wywołanie, Document.Save(fileName), wywnioskuje docelowy format z rozszerzenia pliku. Save(fileName, saveFormat) określa format explicite niezależnie od rozszerzenia, a Save(fileName, saveOptions) (lub odpowiadające przeciążenia Stream) akceptuje podklasę SaveOptions służącą do ustawień specyficznych dla formatu. SaveOptions.CreateSaveOptions(saveFormat) jest statyczną fabryką, która zwraca odpowiednią podklasę opcji dla danego SaveFormat z już ustawionymi wartościami domyślnymi.


Wybór formatu za pomocą SaveFormat

Wyliczenie SaveFormat wymienia każdy identyfikator formatu zapisu rozpoznawany przez bibliotekę. Document.Save zapisuje w pełni zarówno do, jak i z podstawowych formatów dokumentów tej edycji — DOCX, DOCM, DOTX, DOTM oraz Flat OPC (wraz z ich wariantami z makrami i szablonami) — a także Markdown i zwykły tekst. FileFormatUtil.SaveFormatToExtension(saveFormat) i ExtensionToSaveFormat(extension) konwertują pomiędzy wyliczeniem a ciągiem rozszerzenia pliku.

Niektóre wartości SaveFormat znajdują się w wyliczeniu dla pełności API, ale odpowiadają formatom, dla których ta ograniczona, open-source’owa edycja nie implementuje działającego czytnika ani zapisu — próba zapisania do takiego formatu skutkuje wynikiem nieodpowiadającym źródłowemu dokumentowi. Trzymaj się formatów wymienionych powyżej, aby zapewnić niezawodne dwukierunkowe przetwarzanie.


Opcje OOXML: DOCX, DOCM, DOTX, DOTM i Flat OPC

OoxmlSaveOptions konfiguruje zapisywanie do dowolnego z formatów Open XML. Jego właściwość SaveFormat wybiera, którą konkretną wariant zapisać; Password ustawia otwarte hasło na zapisanym pliku (niezależnie od ograniczeń edycji Document.Protect); Compliance wybiera poziom rygorystyczności OOXML; a CompressionLevel / Zip64Mode kontrolują podstawowe pakowanie ZIP. Utwórz je przy użyciu new OoxmlSaveOptions(saveFormat) lub poprzez SaveOptions.CreateSaveOptions(saveFormat).


Eksportowanie do Markdown

MarkdownSaveOptions kontroluje eksport do Markdown: ListExportMode i LinkExportMode określają, jak renderowane są listy i hiperłącza, ImagesFolder / ImagesFolderAlias kontrolują, gdzie zapisywane są wyodrębnione obrazy i jak są odwoływane, ExportImagesAsBase64 osadza je w linii zamiast tego, a TableContentAlignment wpływa na generowany znacznik tabeli. Przekaż instancję MarkdownSaveOptions do Document.Save(fileName, saveOptions) z nazwą pliku .md, lub ustaw jej SaveFormat explicite.


Eksportowanie do zwykłego tekstu

TxtSaveOptions (poprzez jego bazowy TxtSaveOptionsBase, współdzielony z MarkdownSaveOptions) kontroluje eksport do tekstu prostego: Encoding ustawia kodowanie znaków, ParagraphBreak ustawia ciąg końca linii, MaxCharactersPerLine zawija długie wiersze, SimplifyListLabels normalizuje wypunktowania/numery list do zwykłych znaków, a PreserveTableLayout stara się utrzymać wyrównanie kolumn tabel przy użyciu spacji.


Wykrywanie formatu przed konwersją

Przed konwersją pliku, którego formatu jeszcze nie znasz, FileFormatUtil.DetectFileFormat(fileName) zwraca FileFormatInfo z wykrytym LoadFormat. Połącz to z FileFormatUtil.LoadFormatToSaveFormat(loadFormat), aby zdecydować, czy możliwy jest round-trip przez formaty obsługiwane w tej edycji, zanim spróbujesz Document.Save.


Wskazówki i najlepsze praktyki

  • Użyj Save(fileName, saveOptions) zamiast zwykłego przeciążenia Save(fileName, saveFormat), gdy potrzebujesz kontrolować zachowanie specyficzne dla formatu, takie jak renderowanie list w Markdownie lub kompresja OOXML.
  • Ustaw OoxmlSaveOptions.Password dla pliku chronionego otwartym hasłem; to jest oddzielne od Document.Protect, które ogranicza edycję, ale nie szyfruje pliku.
  • Wybierz MarkdownSaveOptions.ExportImagesAsBase64 dla pojedynczego, samodzielnego pliku Markdown, lub ImagesFolder, gdy chcesz folder z wyodrębnionymi plikami obrazów obok Markdowna.
  • Wywołaj SaveOptions.CreateSaveOptions(saveFormat) zamiast ręcznie wybierać konkretną klasę opcji, gdy format docelowy jest określany w czasie wykonywania.
  • Zweryfikuj format docelowy przy użyciu FileFormatUtil przed konwersją, zamiast polegać na samej rozszerzeniu pliku, które może być błędne lub wprowadzające w błąd.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Save(fileName) wybiera niewłaściwy formatRozszerzenie pliku nie pasuje do zamierzonego formatuUżyj Save(fileName, saveFormat) lub Save(fileName, saveOptions), aby wyraźnie określić format
Zapisany plik OOXML nie otworzy się przy użyciu hasłaOoxmlSaveOptions.Password nie został ustawiony przed zapisemUtwórz OoxmlSaveOptions, ustaw Password i przekaż go do Save
Eksport Markdown nieoczekiwanie rozprasza pliki obrazówDomyślne zachowanie MarkdownSaveOptions wyodrębnia obrazy do plikówUstaw ExportImagesAsBase64 = true dla jednego samodzielnego pliku lub ustaw ImagesFolder, aby kontrolować, gdzie trafiają obrazy
Eksport tekstowy traci wyrównanie kolumn tabeliTxtSaveOptions.PreserveTableLayout pozostaje w ustawieniu domyślnymUstaw PreserveTableLayout = true przed zapisaniem

FAQ

Jak zapisać dokument w określonym formacie niezależnie od jego rozszerzenia pliku?

Wywołaj Save(fileName, saveFormat) z wyraźną wartością SaveFormat, lub Save(fileName, saveOptions) z pasującą podklasą SaveOptions.

Jakie formaty ta edycja odczytuje i zapisuje w obie strony?

DOCX, DOCM, DOTX, DOTM, Flat OPC (plus jego warianty z makrami i szablonowe), Markdown oraz zwykły tekst.

Jak zabezpieczyć zapisany plik hasłem?

Ustaw Password w instancji OoxmlSaveOptions i przekaż ją do Document.Save(fileName, saveOptions).

Jak kontrolować zakończenia linii w wyeksportowanym pliku tekstowym?

Ustaw ParagraphBreak w instancji TxtSaveOptions przed zapisaniem.

Jak sprawdzić, jaki format ma plik przed jego konwersją?

Wywołaj FileFormatUtil.DetectFileFormat(fileName) i odczytaj zwrócony FileFormatInfo.LoadFormat.


API Reference Podsumowanie

Klasa/MetodaOpis
Document.SaveZapisuje dokument do pliku, strumienia lub docelowego wyjścia w wybranym formacie.
SaveFormatWyliczenie identyfikujące format docelowy dla operacji zapisu.
SaveOptionsAbstrakcyjna klasa bazowa dla konfiguracji zapisu specyficznej dla formatu; CreateSaveOptions(saveFormat) zwraca pasującą podklasę.
OoxmlSaveOptionsOpcje dla DOCX, DOCM, DOTX, DOTM oraz Flat OPC — hasło, zgodność, kompresja.
MarkdownSaveOptionsOpcje eksportu Markdown — renderowanie list/odnośników, obsługa obrazów.
TxtSaveOptions / TxtSaveOptionsBaseOpcje eksportu tekstu prostego — kodowanie, znaki końca linii, układ tabeli.
FileFormatUtil.DetectFileFormatWykrywa format pliku przed jego wczytaniem lub konwersją.
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormatKonwertuje pomiędzy wartością SaveFormat a rozszerzeniem pliku.

Zobacz także

 Polski