การบันทึกและการส่งออกเอกสาร
การบันทึกและส่งออกเอกสาร
Document.Save เขียนเอกสารไปยังไฟล์หรือสตรีมในรูปแบบเป้าหมาย รูปแบบจะถูกสรุปจากนามสกุลไฟล์, ระบุอย่างชัดเจนเป็นค่า SaveFormat, หรือถูกกำหนดโดยคลาสย่อย SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions, หรือ TxtSaveOptions — เพื่อการควบคุมเฉพาะรูปแบบ คู่มือนี้ครอบคลุมการโอเวอร์โหลด Save, enum SaveFormat, ตัวเลือกการบันทึก OOXML, การส่งออก Markdown และข้อความธรรมดา, และการตรวจจับรูปแบบก่อนการแปลง.
การบันทึกด้วย Document.Save
การเรียกที่ง่ายที่สุด, Document.Save(fileName), สรุปรูปแบบเป้าหมายจากนามสกุลไฟล์ Save(fileName, saveFormat) ทำให้รูปแบบเป็นแบบชัดเจนโดยไม่คำนึงถึงนามสกุล, และ Save(fileName, saveOptions) (หรือการโอเวอร์โหลด Stream ที่สอดคล้อง) รับคลาสย่อย SaveOptions สำหรับการตั้งค่าเฉพาะรูปแบบ SaveOptions.CreateSaveOptions(saveFormat) เป็นโรงงานแบบสแตติกที่คืนคลาสย่อยตัวเลือกที่ถูกต้องสำหรับ SaveFormat ที่กำหนดโดยมีค่าเริ่มต้นตั้งไว้แล้ว.
การเลือกรูปแบบด้วย SaveFormat
enum SaveFormat แสดงรายการตัวระบุรูปแบบการบันทึกทั้งหมดที่ไลบรารีรับรู้ Document.Save เขียนเต็มทั้งจากและไปยังรูปแบบเอกสารหลักของฉบับนี้ — DOCX, DOCM, DOTX, DOTM, และ Flat OPC (พร้อมรูปแบบที่เปิดใช้งานมาโครและเทมเพลต) — รวมถึง Markdown และข้อความธรรมดา FileFormatUtil.SaveFormatToExtension(saveFormat) และ ExtensionToSaveFormat(extension) แปลงระหว่าง enum กับสตริงนามสกุลไฟล์.
ค่าบางอย่างของ SaveFormat มีอยู่ใน enum เพื่อความสมบูรณ์ของ API แต่สอดคล้องกับรูปแบบที่ฉบับที่ลดขนาดและเป็นโอเพ่นซอร์สนี้ไม่ได้ทำการอ่านหรือเขียนที่ทำงานได้ — การพยายามบันทึกเป็นรูปแบบเหล่านั้นจะให้ผลลัพธ์ที่ไม่เทียบเท่ากับเอกสารต้นฉบับ โปรดใช้รูปแบบที่ระบุด้านบนเพื่อการวนกลับที่น่าเชื่อถือ.
ตัวเลือก OOXML: DOCX, DOCM, DOTX, DOTM, และ Flat OPC
OoxmlSaveOptions กำหนดการบันทึกเป็นรูปแบบใดก็ได้ของ Open XML. คุณสมบัติ SaveFormat ของมันเลือกตัวแปรเฉพาะที่จะเขียน; Password ตั้งรหัสผ่านเปิดไฟล์ที่บันทึก (แยกจากข้อจำกัดการแก้ไขของ Document.Protect); Compliance เลือกระดับความเข้มงวดของ OOXML; และ CompressionLevel / Zip64Mode ควบคุมการบรรจุ ZIP ด้านล่าง. สร้างหนึ่งด้วย new OoxmlSaveOptions(saveFormat) หรือผ่าน SaveOptions.CreateSaveOptions(saveFormat).
การส่งออกเป็น Markdown
MarkdownSaveOptions ควบคุมการส่งออกเป็น Markdown: ListExportMode และ LinkExportMode กำหนดว่ารายการและลิงก์จะถูกแสดงอย่างไร, ImagesFolder / ImagesFolderAlias ควบคุมว่าภาพที่แยกออกจะถูกเขียนที่ไหนและอ้างอิงอย่างไร, ExportImagesAsBase64 ฝังภาพเหล่านั้นในบรรทัดแทน, และ TableContentAlignment มีผลต่อการสร้างมาร์คอัปของตาราง. ส่งออบเจกต์ MarkdownSaveOptions ไปยัง Document.Save(fileName, saveOptions) พร้อมชื่อไฟล์ .md, หรือกำหนด SaveFormat ของมันอย่างชัดเจน.
การส่งออกเป็นข้อความธรรมดา
TxtSaveOptions (ผ่าน TxtSaveOptionsBase พื้นฐานของมัน, ที่ใช้ร่วมกับ MarkdownSaveOptions) ควบคุมการส่งออกเป็นข้อความธรรมดา: Encoding ตั้งค่าการเข้ารหัสอักขระ, ParagraphBreak ตั้งค่าสตริงจบบรรทัด, MaxCharactersPerLine ทำการตัดบรรทัดยาว, SimplifyListLabels ปรับรูปแบบหัวข้อ/หมายเลขรายการให้เป็นอักขระธรรมดา, และ PreserveTableLayout พยายามจัดคอลัมน์ตารางให้ตรงกันโดยใช้ช่องว่าง.
การตรวจจับรูปแบบก่อนแปลง
ก่อนที่จะแปลงไฟล์ที่คุณไม่ทราบรูปแบบ, FileFormatUtil.DetectFileFormat(fileName) จะคืนค่า FileFormatInfo พร้อมกับ LoadFormat ที่ตรวจจับได้. ผสานสิ่งนี้กับ FileFormatUtil.LoadFormatToSaveFormat(loadFormat) เพื่อพิจารณาว่าการวนกลับผ่านรูปแบบที่รุ่นนี้สนับสนุนเป็นไปได้หรือไม่ ก่อนที่จะพยายาม Document.Save.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ใช้
Save(fileName, saveOptions)แทนการโอเวอร์โหลดSave(fileName, saveFormat)แบบธรรมดาเมื่อคุณต้องการควบคุมพฤติกรรมเฉพาะรูปแบบ เช่น การแสดงรายการ Markdown หรือการบีบอัด OOXML. - ตั้งค่า
OoxmlSaveOptions.Passwordสำหรับไฟล์ที่มีการป้องกันด้วยรหัสผ่านแบบเปิด; นี่แตกต่างจากDocument.Protectซึ่งจำกัดการแก้ไขแต่ไม่ได้เข้ารหัสไฟล์. - เลือก
MarkdownSaveOptions.ExportImagesAsBase64สำหรับไฟล์ Markdown แบบอิสระหนึ่งไฟล์, หรือImagesFolderเมื่อคุณต้องการโฟลเดอร์ของไฟล์รูปภาพที่แยกออกมาพร้อมกับ Markdown. - เรียกใช้
SaveOptions.CreateSaveOptions(saveFormat)แทนการเลือกคลาสตัวเลือกที่เป็นรูปธรรมด้วยตนเองเมื่อรูปแบบเป้าหมายกำหนดในเวลารัน. - ตรวจสอบรูปแบบเป้าหมายด้วย
FileFormatUtilก่อนการแปลง แทนการพึ่งพานามสกุลไฟล์ที่อาจผิดพลาดหรือทำให้สับสน.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
Save(fileName) เลือกรูปแบบที่ไม่ถูกต้อง | นามสกุลไฟล์ไม่ตรงกับรูปแบบที่ต้องการ | ใช้ Save(fileName, saveFormat) หรือ Save(fileName, saveOptions) เพื่อระบุรูปแบบให้ชัดเจน |
| ไฟล์ OOXML ที่บันทึกไว้ไม่สามารถเปิดด้วยรหัสผ่าน | OoxmlSaveOptions.Password ไม่ได้ตั้งค่าก่อนการบันทึก | สร้าง OoxmlSaveOptions, ตั้งค่า Password, และส่งต่อให้ Save |
| การส่งออก Markdown กระจายไฟล์รูปภาพโดยไม่คาดคิด | พฤติกรรมเริ่มต้นของ MarkdownSaveOptions จะดึงรูปภาพออกเป็นไฟล์ | ตั้งค่า ExportImagesAsBase64 = true เพื่อให้เป็นไฟล์เดียวที่บรรจุเอง, หรือกำหนดค่า ImagesFolder เพื่อควบคุมตำแหน่งที่รูปภาพจะถูกจัดเก็บ |
| การส่งออกเป็นข้อความธรรมดา ทำให้การจัดแนวคอลัมน์ของตารางหายไป | TxtSaveOptions.PreserveTableLayout ถูกปล่อยไว้ในค่าตั้งต้น | ตั้งค่า PreserveTableLayout = true ก่อนบันทึก |
FAQ
ฉันจะบันทึกเอกสารเป็นรูปแบบเฉพาะโดยไม่คำนึงถึงนามสกุลไฟล์ได้อย่างไร?
เรียก Save(fileName, saveFormat) พร้อมค่าของ SaveFormat อย่างชัดเจน หรือ Save(fileName, saveOptions) พร้อมซับคลาส SaveOptions ที่ตรงกัน.
รูปแบบใดบ้างที่ฉบับนี้อ่านและเขียนได้ทั้งสองทาง?
DOCX, DOCM, DOTX, DOTM, Flat OPC (รวมถึงรูปแบบที่เปิดใช้งานมาโครและเทมเพลต), Markdown, และข้อความธรรมดา.
ฉันจะตั้งรหัสผ่านเพื่อป้องกันไฟล์ที่บันทึกไว้ได้อย่างไร?
ตั้งค่า Password บนอินสแตนซ์ของ OoxmlSaveOptions แล้วส่งให้ Document.Save(fileName, saveOptions).
ฉันจะควบคุมการลงท้ายบรรทัดในไฟล์ข้อความที่ส่งออกได้อย่างไร?
ตั้งค่า ParagraphBreak บนอินสแตนซ์ของ TxtSaveOptions ก่อนบันทึก.
ฉันจะตรวจสอบว่าไฟล์อยู่ในรูปแบบใดก่อนที่จะทำการแปลงได้อย่างไร?
เรียก FileFormatUtil.DetectFileFormat(fileName) และอ่าน FileFormatInfo.LoadFormat ที่ส่งกลับมา.
สรุป API Reference
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Document.Save | เขียนเอกสารไปยังไฟล์, สตรีม หรือเป้าหมายการส่งออกในรูปแบบที่เลือก. |
SaveFormat | Enum ระบุรูปแบบเป้าหมายสำหรับการดำเนินการบันทึก. |
SaveOptions | คลาสฐานเชิงนามธรรมสำหรับการกำหนดค่าการบันทึกเฉพาะรูปแบบ; CreateSaveOptions(saveFormat) ส่งกลับซับคลาสที่ตรงกัน. |
OoxmlSaveOptions | ตัวเลือกสำหรับ DOCX, DOCM, DOTX, DOTM, และ Flat OPC — รหัสผ่าน, ความสอดคล้อง, การบีบอัด. |
MarkdownSaveOptions | ตัวเลือกสำหรับการส่งออก Markdown — การแสดงรายการ/ลิงก์, การจัดการภาพ. |
TxtSaveOptions / TxtSaveOptionsBase | ตัวเลือกสำหรับการส่งออกข้อความธรรมดา — การเข้ารหัส, การขึ้นบรรทัดใหม่, การจัดรูปแบบตาราง. |
FileFormatUtil.DetectFileFormat | ตรวจจับรูปแบบของไฟล์ก่อนทำการโหลดหรือแปลงไฟล์. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | แปลงระหว่างค่า SaveFormat กับส่วนขยายไฟล์. |