วิธีการส่งออกและบันทึกเอกสาร Word ใน .NET

วิธีการส่งออกและบันทึกเอกสาร Word ใน .NET

คู่มือนี้แสดงวิธีส่งออกและบันทึกเอกสาร Word ด้วย Aspose.Words FOSS สำหรับ .NET: การบันทึกโดยใช้รูปแบบที่สรุปหรือระบุโดยชัดเจน, การกำหนดค่าตัวเลือกการบันทึก OOXML, การส่งออกเป็น Markdown, การส่งออกเป็นข้อความธรรมดา, และการตรวจจับรูปแบบของไฟล์ก่อนแปลง. Aspose.Words FOSS สำหรับ .NET มีให้ผ่าน NuGet หรือโดยการสร้างจากซอร์ส.

คู่มือทีละขั้นตอน

ขั้นตอนที่ 1: รับไลบรารี

โคลนรีโพซิทอรีและสร้าง Aspose.Words.sln ในโหมด Release จากนั้นเพิ่มการอ้างอิงโปรเจกต์ไปยัง Aspose.Words.csproj จากโปรเจกต์ .NET ของคุณเอง ตามที่อธิบายใน คู่มือการติดตั้ง. เพิ่ม using Aspose.Words; ที่ส่วนบนของไฟล์ใด ๆ ที่บันทึกเอกสาร.


ขั้นตอนที่ 2: บันทึกด้วยรูปแบบที่สรุปหรือระบุโดยชัดเจน

Document.Save(fileName) สรุปรูปแบบเป้าหมายจากส่วนขยายของไฟล์. Save(fileName, saveFormat) ทำให้รูปแบบเป็นแบบชัดเจนโดยไม่คำนึงถึงส่วนขยายโดยรับค่า enum ของ SaveFormat, และ Save(fileName, saveOptions) (หรือ overload ของ Stream ที่ตรงกัน) รับ subclass ของ SaveOptions เพื่อควบคุมเฉพาะรูปแบบ. SaveOptions.CreateSaveOptions(saveFormat) เป็น static factory ที่คืนค่า subclass ของตัวเลือกที่ตรงกันโดยมีค่าเริ่มต้นตั้งไว้แล้วสำหรับ SaveFormat ที่ระบุ. รุ่นนี้บันทึกได้อย่างเต็มรูปแบบทั้งจากและไปยัง DOCX, DOCM, DOTX, DOTM, และ Flat OPC (รวมถึงรูปแบบที่เปิดใช้งานมาโครและเทมเพลต), รวมทั้ง Markdown และข้อความธรรมดา.


ขั้นตอนที่ 3: กำหนดค่าตัวเลือกการส่งออก OOXML

OoxmlSaveOptions กำหนดค่าการบันทึกเป็นหนึ่งในรูปแบบของ Open XML. คุณสมบัติ SaveFormat ของมันเลือก DOCX, DOCM, DOTX, DOTM หรือ Flat OPC โดยเฉพาะ; Password ตั้งรหัสผ่านเปิดสำหรับไฟล์ที่บันทึก, แยกจากข้อจำกัดการแก้ไขของ Document.Protect; Compliance เลือกระดับความเข้มงวดของ OOXML; และ CompressionLevel / Zip64Mode ควบคุมการบรรจุ ZIP ด้านล่าง. สร้างหนึ่งด้วย new OoxmlSaveOptions(saveFormat) หรือผ่าน SaveOptions.CreateSaveOptions(saveFormat).


ขั้นตอนที่ 4: ส่งออกเป็น Markdown

MarkdownSaveOptions ควบคุมการส่งออกเป็น Markdown: ListExportMode และ LinkExportMode กำหนดวิธีการแสดงรายการและลิงก์, ImagesFolder / ImagesFolderAlias ควบคุมตำแหน่งที่ภาพที่ดึงออกจะไปและวิธีการอ้างอิง, ExportImagesAsBase64 ฝังภาพเหล่านั้นในบรรทัดเดียวแทนการเขียนเป็นไฟล์แยก, และ TableContentAlignment มีผลต่อการสร้างมาร์คอัปของตาราง. ส่งผ่านอ็อบเจ็กต์ MarkdownSaveOptions ไปยัง Document.Save(fileName, saveOptions) พร้อมชื่อไฟล์ .md, หรือกำหนดค่า SaveFormat ของมันโดยตรง.


ขั้นตอนที่ 5: ส่งออกเป็นข้อความธรรมดา

TxtSaveOptions (ผ่านฐานร่วม TxtSaveOptionsBase ของมัน, ซึ่งใช้โดย MarkdownSaveOptions) ควบคุมการส่งออกเป็นข้อความธรรมดา: Encoding ตั้งค่าการเข้ารหัสอักขระ, ParagraphBreak ตั้งค่าสตริงสิ้นสุดบรรทัด, MaxCharactersPerLine ทำการตัดบรรทัดยาว, SimplifyListLabels ปรับรูปแบบหัวข้อรายการและหมายเลขให้เป็นอักขระธรรมดา, และ PreserveTableLayout รักษาการจัดแนวคอลัมน์ของตารางโดยใช้ช่องว่าง.


ขั้นตอนที่ 6: ตรวจจับรูปแบบก่อนแปลง

ก่อนที่จะแปลงไฟล์ที่มีรูปแบบไม่ทราบ, FileFormatUtil.DetectFileFormat(fileName) จะคืนค่า FileFormatInfo พร้อมกับ LoadFormat ที่ตรวจพบ. ผสานกับ FileFormatUtil.LoadFormatToSaveFormat(loadFormat) เพื่อเช็คว่ารูปแบบนั้นสามารถทำราวด์-ทริปผ่านรูปแบบที่รุ่นนี้รองรับได้หรือไม่ก่อนเรียก Document.Save. มีสมาชิก enum SaveFormat บางตัวเพื่อความสมบูรณ์ของ API แต่รุ่นโอเพนซอร์สที่ลดทอนนี้ไม่ได้ติดตั้งตัวอ่านหรือเขียนที่ทำงานได้; จงใช้ตระกูล DOCX/DOCM/DOTX/DOTM/Flat OPC รวมถึง Markdown และข้อความธรรมดาสำหรับผลลัพธ์ที่เชื่อถือได้.

ปัญหาทั่วไปและวิธีแก้ไข

Save(fileName) เขียนในรูปแบบที่ไม่ถูกต้อง. ส่วนขยายไฟล์ไม่ตรงกับรูปแบบที่ต้องการ ใช้ Save(fileName, saveFormat) or Save(fileName, saveOptions) เพื่อทำให้รูปแบบชัดเจนแทนการพึ่งพานามสกุลไฟล์.

ไฟล์ OOXML ที่บันทึกไว้จะไม่เปิดได้ด้วยรหัสผ่าน. OoxmlSaveOptions.Password ไม่ได้ตั้งค่าก่อนการบันทึก. สร้าง OoxmlSaveOptions, ตั้งค่า Password, แล้วส่งต่อให้ Save.

การส่งออก Markdown กระจายไฟล์รูปภาพโดยไม่คาดคิด. Default MarkdownSaveOptions พฤติกรรมนี้ดึงรูปภาพออกเป็นไฟล์แยก. ตั้งค่า ExportImagesAsBase64 = true สำหรับไฟล์ Markdown ที่รวมทั้งหมดเป็นไฟล์เดียว, หรือกำหนด ImagesFolder เพื่อควบคุมตำแหน่งที่ภาพจะไป.

การส่งออกเป็นข้อความธรรมดาจะทำให้การจัดแนวคอลัมน์ของตารางหายไป. TxtSaveOptions.PreserveTableLayout จะถูกเว้นไว้เป็นค่าเริ่มต้น ตั้งค่า PreserveTableLayout = true ก่อนบันทึก.

คำถามที่พบบ่อย

ฉันจะบันทึกเป็นรูปแบบเฉพาะโดยไม่คำนึงถึงนามสกุลไฟล์ได้อย่างไร?

เรียก Save(fileName, saveFormat) ด้วยค่า SaveFormat ที่ระบุอย่างชัดเจน หรือ Save(fileName, saveOptions) ด้วย sub-class SaveOptions ที่ตรงกัน.

ฟอร์แมตใดบ้างที่สามารถทำ round-trip ได้ทั้งสองทิศทางในฉบับนี้?

DOCX, DOCM, DOTX, DOTM, Flat OPC (รวมถึงเวอร์ชันที่เปิดใช้งานมาโครและเทมเพลต), Markdown, และ plain text.

ฉันจะตั้งรหัสผ่านป้องกันไฟล์ที่บันทึกไว้ให้ไม่สามารถเปิดได้เลยได้อย่างไร?

กำหนดค่า Password บนอินสแตนซ์ของ OoxmlSaveOptions แล้วส่งให้ Document.Save(fileName, saveOptions).

ฉันจะควบคุมการจบบรรทัดในไฟล์ข้อความที่ส่งออกอย่างไร?

กำหนดค่า ParagraphBreak บนอินสแตนซ์ของ TxtSaveOptions ก่อนบันทึก.

ฉันจะตรวจสอบฟอร์แมตของไฟล์ก่อนทำการแปลงได้อย่างไร?

เรียก FileFormatUtil.DetectFileFormat(fileName) และอ่าน FileFormatInfo.LoadFormat ที่คืนกลับมา.

ดูเพิ่มเติม

 ภาษาไทย