วิธีโหลดเอกสาร Word ใน .NET

วิธีโหลดเอกสาร Word ใน .NET

วิธีโหลดเอกสาร Word ใน .NET

Aspose.Words FOSS for .NET อ่านเอกสารเข้าหน่วยความจำทันทีที่คุณสร้าง a Document object — ทุกเส้นทางการโหลดในไลบรารีจะไหลผ่าน Document’s constructor overloads และ the LoadOptions class. คู่มือนี้แสดงวิธีโหลดเอกสารจากไฟล์หรือสตรีม, ให้รหัสผ่านหรือการตั้งค่าเฉพาะรูปแบบ, และควบคุมสิ่งที่เกิดขึ้นเมื่อการโหลดพบแหล่งข้อมูลภายนอกหรือเอกสารที่อาจมีรูปแบบผิดพลาด. Aspose.Words FOSS for .NET ถูกสร้างจากซอร์สและอ้างอิงโดยตรงในโปรเจกต์แทนการติดตั้งจากฟีดแพคเกจ — ดูที่ คู่มือการติดตั้ง สำหรับขั้นตอนการสร้างก่อนดำเนินการตามงานด้านล่าง.


คู่มือแบบขั้นตอนต่อขั้นตอน

ขั้นตอนที่ 1: โหลดเอกสารจากไฟล์หรือสตรีม

Document มีคอนสตรัคเตอร์ทั้งหมดห้าตัว. Document() สร้างเอกสารใหม่ที่ว่างเปล่าแทนการโหลดเอกสาร. Document(fileName) โหลดโดยตรงจากเส้นทางบนดิสก์, และ Document(stream) โหลดจาก Stream ที่อ่านได้ทุกประเภท — มีประโยชน์เมื่อแหล่งที่ม不是ไฟล์, เช่น เนื้อหาที่อยู่ในหน่วยความจำแล้วหรือได้รับผ่านการเชื่อมต่อเครือข่าย. ทั้งสองมีโอเวอร์โหลดคู่ที่รับอาร์กิวเมนต์ที่สอง, Document(fileName, loadOptions) และ Document(stream, loadOptions), ซึ่งเป็นจุดเริ่มต้นสำหรับทุกงานอื่นในคู่มือนี้.


ขั้นตอนที่ 2: โหลดเอกสารที่มีการป้องกันด้วยรหัสผ่าน

สร้าง LoadOptions พร้อมรหัสผ่านก่อนเรียก Document(fileName, loadOptions) (หรือ overload ของสตรีม) new LoadOptions(password) ตั้งค่า LoadOptions.Password โดยตรง; หรืออีกทางเลือกหนึ่ง ให้ตั้งค่า Password บนอินสแตนซ์ LoadOptions() ที่ไม่มีพารามิเตอร์ก่อนส่งเข้าไป. จัดหารหัสผ่านล่วงหน้าแทนการโหลดก่อนแล้วตอบสนองต่อความล้มเหลว — Aspose.Words FOSS สำหรับ .NET ต้องการรหัสผ่านเพื่อทำการพาร์สไฟล์ที่ถูกป้องกันทั้งหมด, ดังนั้นจึงไม่มีสถานะที่โหลดบางส่วนให้กู้คืน.


ขั้นตอนที่ 3: ใช้ตัวเลือกเฉพาะรูปแบบสำหรับแหล่งที่มาข้อความและ Markdown

แหล่งที่มาข้อความธรรมดาและ Markdown ยอมรับการตั้งค่าที่ฐาน LoadOptions ไม่เปิดเผย TxtLoadOptions เพิ่ม AutoNumberingDetection และ DetectNumberingWithWhitespaces เพื่อระบุรายการลำดับเลขในข้อความธรรมดา, DetectHyperlinks เพื่อแปลง URL เปล่าเป็นไฮเปอร์ลิงก์, DocumentDirection (LeftToRight, RightToLeft หรือ Auto) สำหรับทิศทางการไหลของข้อความ, และ LeadingSpacesOptions/TrailingSpacesOptions แยกกัน (ประเภท TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) สำหรับการจัดการช่องว่างที่จุดเริ่มต้นและจุดสิ้นสุดของแต่ละบรรทัด. MarkdownLoadOptions เพิ่ม PreserveEmptyLines, ImportUnderlineFormatting และ SoftLineBreakCharacter เพื่อควบคุมว่าแนวปฏิบัติการตัดบรรทัดของ Markdown จะแปลงเป็นย่อหน้าและช่วงอย่างไร. ทั้งสองซับคลาสสืบทอดจาก LoadOptions, ดังนั้นรหัสผ่านหรือคอลแบ็กการโหลดทรัพยากรที่ตั้งบนแต่ละอันจะทำงานเช่นเดียวกับบนคลาสฐาน — ส่งอินสแตนซ์เฉพาะรูปแบบไปยัง Document(fileName, loadOptions) เหมือนที่คุณทำกับ LoadOptions ธรรมดา.


ขั้นตอนที่ 4: เปลี่ยนเส้นทางหรือดักจับทรัพยากรภายนอกระหว่างการโหลด

ตั้งค่า LoadOptions.ResourceLoadingCallback ให้เป็นการดำเนินการของ IResourceLoadingCallback เมื่อคุณต้องการควบคุมวิธีที่ทรัพยากรภายนอกที่เอกสารอ้างอิงถูกแก้ไขขณะโหลด. วิธี ResourceLoading(args) ของมันรับ ResourceLoadingArgs ที่อธิบาย ResourceType ของทรัพยากร (Image, Font, CssStyleSheet หรือ Document) พร้อมกับ Uri และ OriginalUri, และคืนค่า ResourceLoadingAction — Default เพื่อโหลดทรัพยากรตามปกติ, Skip เพื่อละเว้น, หรือ UserProvided เพื่อแทนที่ข้อมูลที่จัดหาโดย ResourceLoadingArgs.SetData(data).


ขั้นตอนที่ 5: ตั้งค่าภาษาเริ่มต้นและพฤติกรรมการกู้คืน

เมื่อเมตาดาต้าภาษาของเอกสารหายหรือไม่น่าเชื่อถือ, ตั้งค่า LoadOptions.LanguagePreferences.DefaultEditingLanguage ให้เป็นค่าประเภท EditingLanguage ก่อนโหลด, และใช้ AddEditingLanguage(language) หรือ AddEditingLanguages(languages) บน LanguagePreferences เพื่อลงทะเบียนภาษาที่เพิ่มเติมที่เอกสารอาจมี. สำหรับแหล่งที่อาจมีรูปแบบผิดพลาด, ตั้งค่า LoadOptions.RecoveryMode ให้เป็นค่าประเภท DocumentRecoveryMode — None เพื่อโหลดโดยไม่มีการพยายามกู้คืนใด ๆ, หรือ TryRecover เพื่อให้ตัวโหลดจัดการกับปัญหาโครงสร้างบางอย่างแทนที่จะล้มเหลวโดยตรง.


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

การโหลดเอกสารที่ป้องกันด้วยรหัสผ่านยังคงทำให้เกิดข้อยกเว้นหลังจากให้รหัสผ่านแล้ว. ยืนยันว่ารหัสผ่านถูกตั้งค่าในตำแหน่งที่แน่นอน LoadOptions อินสแตนซ์ที่ส่งไปยัง Document(fileName, loadOptions) (หรือการอับโหลดสตรีม) — ผ่าน new LoadOptions(password) หรือโดยการตั้งค่า Password ต่อมา — และวัตถุนี้คือที่ถูกส่งจริงไปยังคอนสตรัคเตอร์. A LoadOptions ที่ถูกสร้างขึ้นแต่ไม่เคยมอบให้กับ Document ไม่มีผลต่อการโหลด.

การตั้งค่าเฉพาะสำหรับ Text หรือ Markdown ดูเหมือนจะไม่ทำงาน. ตรวจสอบว่า a TxtLoadOptions or MarkdownLoadOptions อินสแตนซ์ — ไม่ใช่ฐาน LoadOptions — ถูกส่งไปยัง Document คอนสตรัคเตอร์ เพียงคลาสย่อยเท่านั้นที่เปิดเผยคุณสมบัติเฉพาะฟอร์แมต; การส่งคลาสฐานจะคอมไพล์ได้แต่จะละทิ้งคุณสมบัติเหล่านั้นอย่างเงียบๆ.

ทรัพยากรภายนอกไม่ได้ถูกดักจับหรือเปลี่ยนเส้นทาง. ResourceLoadingCallback ต้องตั้งค่าใน LoadOptions อ็อบเจกต์ที่ส่งไปยัง Document คอนสตรัคเตอร์ และต้องกำหนดค่าก่อนการเรียกโหลด การกำหนดค่าหลังจากที่การโหลดเสร็จสิ้นแล้วจะไม่มีผล.

เอกสารที่มีรูปแบบผิดพลาดยังคงล้มเหลวในการโหลดหลังจากตั้งค่า RecoveryMode. DocumentRecoveryMode.TryRecover ทำให้ตัวโหลดสามารถทำงานรอบๆ ปัญหาโครงสร้างบางอย่างในเอกสารได้ แต่ความเสียหายที่รุนแรงกว่าอาจยังคงทำให้ไม่สามารถโหลดเอกสารสำเร็จได้.

เอกสารที่โหลดจาก Stream ทำงานแตกต่างจากไฟล์เดียวกันที่โหลดโดยใช้พาธ. ตรวจสอบว่าตำแหน่งของสตรีมอยู่ที่จุดเริ่มต้นก่อนส่งไปยัง Document(stream) or Document(stream, loadOptions) — สตรีมที่หยุดกลางเนื้อหาโหลดเฉพาะไบต์ที่เหลือเท่านั้น.


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

ฉันจะโหลดเอกสารโดยไม่ใช้ตัวเลือกพิเศษใด ๆ ได้อย่างไร?

ส่งเส้นทางไฟล์หรือ Stream โดยตรงไปยัง Document(fileName) หรือ Document(stream) — LoadOptions จำเป็นเฉพาะเมื่อมีรหัสผ่าน การตั้งค่าเฉพาะรูปแบบ หรือ callback.

ความแตกต่างระหว่าง LoadOptions, TxtLoadOptions และ MarkdownLoadOptions คืออะไร?

TxtLoadOptions และ MarkdownLoadOptions ทั้งสองสืบทอดมาจาก LoadOptions และเพิ่มการตั้งค่าที่เฉพาะเจาะจงสำหรับแหล่งข้อความธรรมดาและ Markdown ตามลำดับ คุณสมบัติทั่วไปของ LoadOptions ทุกอย่าง — รหัสผ่าน, การเข้ารหัส, callbacks — ยังคงพร้อมใช้งานในแต่ละ subclass.

ฉันสามารถโหลดเอกสารโดยตรงจาก byte array ได้หรือไม่?

ใส่ byte ลงใน MemoryStream แล้วส่งสตรีมนั้นไปยัง Document(stream) หรือ Document(stream, loadOptions) — ไม่มีคอนสตรักเตอร์ที่รับ byte array โดยตรง.

ฉันจะควบคุมสิ่งที่เกิดขึ้นเมื่อ loader ไม่สามารถแก้ไข resource ภายนอกได้อย่างไร?

Implement IResourceLoadingCallback แล้วกำหนดให้กับ LoadOptions.ResourceLoadingCallback. ส่งคืน ResourceLoadingAction.Skip จาก ResourceLoading(args) เพื่อละเว้น resource แทนที่จะให้การโหลดล้มเหลว.

การตั้งค่า RecoveryMode มีผลต่อวิธีการโหลดเอกสารที่รูปแบบถูกต้องหรือไม่?

No. DocumentRecoveryMode จะเปลี่ยนพฤติกรรมเฉพาะเมื่อโหลดเดอร์พบปัญหาโครงสร้างจริง ๆ — เอกสารที่มีโครงสร้างที่ถูกต้องจะโหลดในลักษณะเดียวกันไม่ว่าการตั้งค่าเป็นอย่างไร.


ดูเพิ่มเติม

 ภาษาไทย