Menyimpan dan Mengekspor Dokumen
Menyimpan dan Mengekspor Dokumen
Document.Save menulis dokumen ke file atau aliran dalam format target. Format tersebut dapat diperkirakan dari ekstensi file, diberikan secara eksplisit sebagai nilai SaveFormat, atau dipengaruhi oleh subclass SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions, atau TxtSaveOptions — untuk kontrol khusus format. Panduan ini mencakup overload Save, enum SaveFormat, opsi penyimpanan OOXML, ekspor Markdown dan teks biasa, serta mendeteksi format sebelum mengkonversi.
Menyimpan dengan Document.Save
Pemanggilan paling sederhana, Document.Save(fileName), memperkirakan format target dari ekstensi file. Save(fileName, saveFormat) menjadikan format eksplisit terlepas dari ekstensi, dan Save(fileName, saveOptions) (atau overload Stream yang cocok) menerima subclass SaveOptions untuk pengaturan khusus format. SaveOptions.CreateSaveOptions(saveFormat) adalah pabrik statis yang mengembalikan subclass opsi yang tepat untuk SaveFormat tertentu dengan nilai defaultnya sudah disetel.
Memilih Format dengan SaveFormat
Enum SaveFormat mencantumkan setiap pengidentifikasi format penyimpanan yang dikenali oleh perpustakaan. Document.Save menulis sepenuhnya baik ke maupun dari format dokumen inti edisi ini — DOCX, DOCM, DOTX, DOTM, dan Flat OPC (beserta varian makro-aktif dan templatnya) — serta Markdown dan teks biasa. FileFormatUtil.SaveFormatToExtension(saveFormat) dan ExtensionToSaveFormat(extension) mengonversi antara enum dan string ekstensi file.
Beberapa nilai SaveFormat ada dalam enum untuk melengkapi API tetapi berhubungan dengan format yang tidak diimplementasikan pembaca atau penulis yang berfungsi pada edisi terbatas, open-source ini — mencoba menyimpan ke salah satu format tersebut menghasilkan output yang tidak setara dengan dokumen sumber. Tetap gunakan format yang disebutkan di atas untuk proses round-tripping yang dapat diandalkan.
Opsi OOXML: DOCX, DOCM, DOTX, DOTM, dan Flat OPC
OoxmlSaveOptions mengonfigurasi penyimpanan ke salah satu format Open XML. Properti SaveFormat-nya memilih varian spesifik yang akan ditulis; Password menetapkan kata sandi terbuka pada file yang disimpan (terlepas dari pembatasan penyuntingan Document.Protect); Compliance memilih tingkat ketatnya OOXML; dan CompressionLevel / Zip64Mode mengendalikan pengemasan ZIP yang mendasarinya. Buat satu dengan new OoxmlSaveOptions(saveFormat) atau melalui SaveOptions.CreateSaveOptions(saveFormat).
Mengekspor ke Markdown
MarkdownSaveOptions mengontrol ekspor Markdown: ListExportMode dan LinkExportMode mengatur bagaimana daftar dan tautan hiperteks dirender, ImagesFolder / ImagesFolderAlias mengendalikan tempat gambar yang diekstrak ditulis dan bagaimana mereka direferensikan, ExportImagesAsBase64 menyematkannya secara inline sebagai gantinya, dan TableContentAlignment memengaruhi markup tabel yang dihasilkan. Berikan sebuah instance MarkdownSaveOptions ke Document.Save(fileName, saveOptions) dengan nama file .md, atau atur SaveFormatnya secara eksplisit.
Mengekspor ke Teks Biasa
TxtSaveOptions (melalui TxtSaveOptionsBase dasarnya, yang dibagi dengan MarkdownSaveOptions) mengontrol ekspor teks biasa: Encoding menetapkan pengkodean karakter, ParagraphBreak menetapkan string akhir baris, MaxCharactersPerLine membungkus baris panjang, SimplifyListLabels menormalkan peluru/nomor daftar menjadi karakter polos, dan PreserveTableLayout berusaha menjaga kolom tabel tetap rata menggunakan spasi.
Mendeteksi Format Sebelum Mengkonversi
Sebelum mengkonversi file yang formatnya belum Anda ketahui, FileFormatUtil.DetectFileFormat(fileName) mengembalikan FileFormatInfo dengan LoadFormat yang terdeteksi. Gabungkan ini dengan FileFormatUtil.LoadFormatToSaveFormat(loadFormat) untuk memutuskan apakah perjalanan bolak-balik melalui format yang didukung edisi ini memungkinkan sebelum mencoba Document.Save.
Tips dan Praktik Terbaik
- Gunakan
Save(fileName, saveOptions)alih-alih overloadSave(fileName, saveFormat)biasa setiap kali Anda perlu mengontrol perilaku spesifik format seperti rendering daftar Markdown atau kompresi OOXML. - Setel
OoxmlSaveOptions.Passworduntuk file yang dilindungi kata sandi terbuka; itu terpisah dariDocument.Protect, yang membatasi penyuntingan tetapi tidak mengenkripsi file. - Pilih
MarkdownSaveOptions.ExportImagesAsBase64untuk satu file Markdown yang berdiri sendiri, atauImagesFolderketika Anda menginginkan folder berisi file gambar yang diekstrak bersamaan dengan Markdown. - Panggil
SaveOptions.CreateSaveOptions(saveFormat)alih-alih memilih kelas opsi konkret secara manual ketika format target ditentukan pada waktu berjalan. - Verifikasi format target dengan
FileFormatUtilsebelum konversi daripada mengandalkan ekstensi file saja, yang dapat salah atau menyesatkan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Save(fileName) memilih format yang salah | Ekstensi file tidak cocok dengan format yang dimaksud | Gunakan Save(fileName, saveFormat) atau Save(fileName, saveOptions) untuk membuat format menjadi eksplisit |
| File OOXML yang disimpan tidak dapat dibuka dengan kata sandi | OoxmlSaveOptions.Password tidak disetel sebelum menyimpan | Buat sebuah OoxmlSaveOptions, atur Password, dan berikan ke Save |
| Ekspor Markdown menyebarkan file gambar secara tak terduga | Perilaku default MarkdownSaveOptions mengekstrak gambar ke file | Atur ExportImagesAsBase64 = true untuk satu file mandiri, atau atur ImagesFolder untuk mengontrol ke mana gambar ditempatkan |
| Ekspor teks biasa kehilangan penyelarasan kolom tabel | TxtSaveOptions.PreserveTableLayout dibiarkan pada nilai defaultnya | Setel PreserveTableLayout = true sebelum menyimpan |
FAQ
Bagaimana cara menyimpan dokumen ke format tertentu terlepas dari ekstensi file-nya?
Panggil Save(fileName, saveFormat) dengan nilai SaveFormat yang eksplisit, atau Save(fileName, saveOptions) dengan subclass SaveOptions yang cocok.
Format apa yang dapat dibaca dan ditulis oleh edisi ini secara dua arah?
DOCX, DOCM, DOTX, DOTM, Flat OPC (beserta varian makro-aktif dan templatnya), Markdown, dan teks biasa.
Bagaimana cara melindungi file yang disimpan dengan password?
Setel Password pada instance OoxmlSaveOptions dan berikan ke Document.Save(fileName, saveOptions).
Bagaimana cara mengontrol akhir baris dalam file teks yang diekspor?
Setel ParagraphBreak pada instance TxtSaveOptions sebelum menyimpan.
Bagaimana cara saya memeriksa format sebuah file sebelum mengonversinya?
Panggil FileFormatUtil.DetectFileFormat(fileName) dan baca FileFormatInfo.LoadFormat yang dikembalikan.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Document.Save | Menulis dokumen ke file, stream, atau target output dalam format yang dipilih. |
SaveFormat | Enum yang mengidentifikasi format target untuk operasi penyimpanan. |
SaveOptions | Kelas dasar abstrak untuk konfigurasi penyimpanan khusus format; CreateSaveOptions(saveFormat) mengembalikan subclass yang cocok. |
OoxmlSaveOptions | Opsi untuk DOCX, DOCM, DOTX, DOTM, dan Flat OPC — kata sandi, kepatuhan, kompresi. |
MarkdownSaveOptions | Opsi untuk ekspor Markdown — perenderan daftar/tautan, penanganan gambar. |
TxtSaveOptions / TxtSaveOptionsBase | Opsi untuk ekspor teks biasa — pengkodean, jeda baris, tata letak tabel. |
FileFormatUtil.DetectFileFormat | Mendeteksi format file sebelum memuat atau mengkonversinya. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | Mengonversi antara nilai SaveFormat dan ekstensi file. |