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ążeniaSave(fileName, saveFormat), gdy potrzebujesz kontrolować zachowanie specyficzne dla formatu, takie jak renderowanie list w Markdownie lub kompresja OOXML. - Ustaw
OoxmlSaveOptions.Passworddla pliku chronionego otwartym hasłem; to jest oddzielne odDocument.Protect, które ogranicza edycję, ale nie szyfruje pliku. - Wybierz
MarkdownSaveOptions.ExportImagesAsBase64dla pojedynczego, samodzielnego pliku Markdown, lubImagesFolder, 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
FileFormatUtilprzed konwersją, zamiast polegać na samej rozszerzeniu pliku, które może być błędne lub wprowadzające w błąd.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
Save(fileName) wybiera niewłaściwy format | Rozszerzenie pliku nie pasuje do zamierzonego formatu | Użyj Save(fileName, saveFormat) lub Save(fileName, saveOptions), aby wyraźnie określić format |
| Zapisany plik OOXML nie otworzy się przy użyciu hasła | OoxmlSaveOptions.Password nie został ustawiony przed zapisem | Utwórz OoxmlSaveOptions, ustaw Password i przekaż go do Save |
| Eksport Markdown nieoczekiwanie rozprasza pliki obrazów | Domyślne zachowanie MarkdownSaveOptions wyodrębnia obrazy do plików | Ustaw ExportImagesAsBase64 = true dla jednego samodzielnego pliku lub ustaw ImagesFolder, aby kontrolować, gdzie trafiają obrazy |
| Eksport tekstowy traci wyrównanie kolumn tabeli | TxtSaveOptions.PreserveTableLayout pozostaje w ustawieniu domyślnym | Ustaw 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/Metoda | Opis |
|---|---|
Document.Save | Zapisuje dokument do pliku, strumienia lub docelowego wyjścia w wybranym formacie. |
SaveFormat | Wyliczenie identyfikujące format docelowy dla operacji zapisu. |
SaveOptions | Abstrakcyjna klasa bazowa dla konfiguracji zapisu specyficznej dla formatu; CreateSaveOptions(saveFormat) zwraca pasującą podklasę. |
OoxmlSaveOptions | Opcje dla DOCX, DOCM, DOTX, DOTM oraz Flat OPC — hasło, zgodność, kompresja. |
MarkdownSaveOptions | Opcje eksportu Markdown — renderowanie list/odnośników, obsługa obrazów. |
TxtSaveOptions / TxtSaveOptionsBase | Opcje eksportu tekstu prostego — kodowanie, znaki końca linii, układ tabeli. |
FileFormatUtil.DetectFileFormat | Wykrywa format pliku przed jego wczytaniem lub konwersją. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | Konwertuje pomiędzy wartością SaveFormat a rozszerzeniem pliku. |