ทำงานกับข้อความ

ทำงานกับข้อความ

ข้อความในเอกสาร Word ถูกจัดระเบียบเป็นโหนด Run (อักขระต่อเนื่องที่ใช้รูปแบบฟอนต์เดียวกัน) ซึ่งจัดกลุ่มอยู่ในโหนด Paragraph. Aspose.Words FOSS สำหรับ .NET เปิดเผยทั้งสองโดยตรง พร้อมกับ Font สำหรับการจัดรูปแบบอักขระ, ParagraphFormat สำหรับการจัดรูปแบบระดับย่อหน้า, และ Range สำหรับการอ่านหรือแทนที่ข้อความในส่วนใดส่วนหนึ่งของต้นไม้. คู่มือฉบับนี้ครอบคลุมการทำงานกับรันและฟอนต์, การจัดรูปแบบย่อหน้า, การอ่านและแทนที่ข้อความ, ความคิดเห็น, และการจัดรูปแบบรายการระดับย่อหน้า.


รันและการจัดรูปแบบอักขระ

Run แสดงถึงช่วงข้อความที่ใช้รูปแบบเดียวกัน; คุณสมบัติ Text ของมันเก็บเนื้อหาข้อความธรรมดาและคุณสมบัติ Font ของมัน (อ็อบเจ็กต์ Font) เก็บการจัดรูปแบบระดับอักขระ — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough, และอื่น ๆ อีกมากมาย. Font.ClearFormatting() รีเซ็ตฟอนต์ของรันกลับเป็นค่าเริ่มต้น. รันของย่อหน้าสามารถเข้าถึงได้ผ่านคุณสมบัติ Runs ของมัน, ซึ่งเป็น RunCollection.


ย่อหน้าและการจัดรูปแบบย่อหน้า

Paragraph เป็นโหนดเชิงประกอบที่บรรจุรัน (และเนื้อหาอินไลน์อื่น) ของย่อหน้าเดียว; ย่อหน้าของเอกสารหรือส่วนของร่างกายถูกเปิดเผยเป็น ParagraphCollection (Body.Paragraphs). Paragraph.ParagraphFormat (อ็อบเจ็กต์ ParagraphFormat) ควบคุมการจัดวางระดับย่อหน้า — Alignment, การเยื้อง (LeftIndent, RightIndent, FirstLineIndent), ระยะห่าง (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule), และพฤติกรรมการแบ่งหน้า (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() รีเซ็ตค่าเหล่านี้กลับเป็นค่าเริ่มต้น, และ Paragraph.JoinRunsWithSameFormatting() รวมรันที่อยู่ติดกันซึ่งมีการจัดรูปแบบเดียวกัน.


การอ่านและแทนที่ข้อความด้วย Range

ทุกโหนดที่มีเนื้อหา — Document, Section, Paragraph หรือ Run — จะเปิดเผย Range. Range.Text คืนค่าข้อความธรรมดาของทุกอย่างภายในช่วงนั้น, และ Range.Replace(pattern, replacement) ทำการค้นหาและแทนที่ที่จำกัดเฉพาะช่วงนั้น, ดังนั้นคุณสามารถ, ตัวอย่างเช่น, แทนที่ข้อความภายในย่อหน้าเดียวโดยไม่กระทบส่วนอื่นของเอกสาร. Range.Delete() ลบเนื้อหาของช่วงนั้นโดยตรง.


Comments

โหนด Comment จะผูกคอมเมนต์กับตำแหน่งในข้อความ; สร้างหนึ่งด้วย new Comment(doc, author, initial, dateTime) และตั้งค่าข้อความเนื้อหาด้วย SetText(text), จากนั้นแทรกลงในเอกสารเหมือนโหนดอื่นใด. Comment.AddReply(author, initial, dateTime, text) แนบการตอบกลับแบบเธรด, และ RemoveReply(reply) / RemoveAllReplies() ลบมันออก. คอมเมนต์ของเอกสารจะถูกรวบรวมไว้ใน CommentCollection.


การจัดรูปแบบรายการระดับย่อหน้า

Paragraph.ListFormat (อ็อบเจกต์ ListFormat) รายงานและควบคุมว่าย่อหน้านั้นเป็นส่วนหนึ่งของรายการหรือไม่: IsListItem และ ListLevelNumber รายงานสถานะปัจจุบันของมัน, ApplyBulletDefault() และ ApplyNumberDefault() แปลงย่อหน้าเป็นรายการแบบหัวข้อสัญลักษณ์หรือหมายเลขเริ่มต้น, ListIndent() / ListOutdent() ปรับระดับการซ้อนของรายการ, และ RemoveNumbers() กลับเป็นย่อหน้าปกติ.


เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • ตั้งค่าคุณสมบัติฟอนต์บน DocumentBuilder.Font ก่อนเขียนข้อความด้วยตัวสร้างแทนที่จะเขียนข้อความก่อนแล้วปรับรูปแบบอ็อบเจกต์ Run แต่ละอันภายหลัง.
  • จำกัดขอบเขตของ Range.Replace ให้เป็นช่วงที่เล็กที่สุดซึ่งครอบคลุมสิ่งที่คุณต้องการเปลี่ยนจริง — เรียกใช้บนช่วงของ Paragraph หรือ Section แทนที่จะเป็นทั้งเอกสารเมื่อการเปลี่ยนแปลงไม่ควรใช้ทั่วเอกสาร.
  • เรียก Paragraph.JoinRunsWithSameFormatting() หลังจากการแก้ไขเชิงโปรแกรมหลายขั้นตอนเพื่อหลีกเลี่ยงโครงสร้างรันที่แยกเป็นส่วนๆ อย่างไม่จำเป็น.
  • ใช้ ListFormat.ApplyBulletDefault() / ApplyNumberDefault() เพื่อสร้างรายการค่าเริ่มต้นอย่างรวดเร็วแทนการสร้างคำนิยามรายการด้วยตนเองเมื่อค่าตั้งต้นในตัวเพียงพอ.
  • อ่านผลลัพธ์ของ Comment.AddReply เป็นโหนด Comment เอง — คำตอบเป็นออบเจ็กต์คอมเมนต์เต็มรูปแบบ ไม่ใช่สตริงธรรมดา.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้ไข
การจัดรูปแบบ Run ของ Font ไม่ทำให้ข้อความที่อยู่ติดกันเปลี่ยนแปลงแบบมองเห็นได้ข้อความที่อยู่ติดกันอยู่ใน Run ที่ต่างกันและมีอินสแตนซ์ Font ของตนเองค้นหาและจัดรูปแบบทุก Run ที่ได้รับผลกระทบ, หรือกำหนดการจัดรูปแบบผ่าน DocumentBuilder.Font ก่อนการเขียน
Range.Replace ทำให้ข้อความเปลี่ยนแปลงนอกพื้นที่ที่ตั้งใจReplace ถูกเรียกบน Document.Range แทนช่วงของโหนดที่แคบลงเรียก Replace บน Paragraph เฉพาะ, Section หรือ Range ของโหนดอื่น
ย่อหน้าดูเหมือนรายการแต่ IsListItem เป็นเท็จสัญลักษณ์หัวข้อ/หมายเลขเป็นข้อความที่พิมพ์ด้วยมือ ไม่ใช่รูปแบบรายการจริงใช้รูปแบบรายการจริงด้วย ListFormat.ApplyBulletDefault() หรือ ApplyNumberDefault() แทนการพิมพ์อักขระ
เอกสารมีโหนด Run มากกว่าที่คาดไว้หลายรายการการแก้ไขเล็ก ๆ ซ้ำหลายครั้งทำให้ส่วนที่ต่อเนื่องแยกออกโดยไม่รวมกลับเข้าด้วยกันเรียก Paragraph.JoinRunsWithSameFormatting() หลังจากชุดของการแก้ไข

FAQ

ความแตกต่างระหว่าง Run และ Paragraph คืออะไร?

ข้อความ Run คือช่วงข้อความที่ใช้รูปแบบอักขระชุดเดียวกัน (Font); ส่วน Paragraph คือโหนดเชิงประกอบที่บรรจุหนึ่งหรือหลายรัน (และเนื้อหาอินไลน์อื่น) พร้อมรูปแบบระดับย่อหน้า (ParagraphFormat).

ฉันจะอ่านข้อความทั้งหมดในเอกสารหรือส่วนได้อย่างไร?

อ่านคุณสมบัติ Text ของ Range ของโหนดนั้น — ตัวอย่างเช่น document.Range.Text หรือ section.Range.Text.

ฉันจะค้นหาและแทนที่ข้อความในย่อหน้าเดียวได้อย่างไร?

เรียก Replace(pattern, replacement) บน Range ของ Paragraph นั้น แทนที่จะเรียกบน Document.Range.

ฉันจะเพิ่มความคิดเห็นในเอกสารได้อย่างไร?

สร้างมันด้วย new Comment(doc, author, initial, dateTime), ตั้งค่าข้อความด้วย SetText(text), แล้วแทรกลงในต้นไม้; ตอบกลับมันด้วย Comment.AddReply(author, initial, dateTime, text).

ฉันจะเปลี่ยนย่อหน้าให้เป็นรายการแบบหัวข้อย่อยได้อย่างไร?

เรียก ApplyBulletDefault() บน ListFormat ของย่อหน้านั้น; ใช้ ApplyNumberDefault() สำหรับรายการลำดับเลขแทน.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
Runช่วงข้อความที่ใช้การจัดรูปแบบอักขระชุดเดียวกัน.
Fontการจัดรูปแบบระดับอักขระ — ชื่อ, ขนาด, ตัวหนา, ตัวเอียง, สี, และอื่น ๆ.
Paragraphโหนดเชิงประกอบที่บรรจุ run และการจัดรูปแบบของย่อหน้าเดียว.
ParagraphFormatการจัดรูปแบบระดับย่อหน้า — การจัดแนว, การเยื้อง, ระยะห่าง, การแบ่งหน้า.
ParagraphCollectionชุดที่มีประเภทของโหนด Paragraph, เช่น Body.Paragraphs.
Rangeพื้นที่ต่อเนื่องของเอกสาร; รองรับ Text, Replace และ Delete.
Commentความคิดเห็นแบบเธรดที่ยึดติดกับตำแหน่งในข้อความ.
CommentCollectionชุดของความคิดเห็นในเอกสาร.
ListFormatควบคุมว่าข้อความย่อหน้าจะมีส่วนร่วมในรายการอย่างไรและในลักษณะใด.

ดูเพิ่มเติม

 ภาษาไทย