การนำทางด้วยเคอร์เซอร์
ในขณะที่ทำงานกับเอกสาร แม้ว่าจะเป็นเอกสารสั้นหรือยาว คุณจะต้องเลื่อนดูเอกสารของคุณ การนำทางด้วยเคอร์เซอร์เสมือนแสดงถึงความสามารถในการนำทางระหว่างโหนดต่างๆ ในเอกสาร
ภายในเอกสารสั้นๆ การเคลื่อนย้ายเอกสารทำได้ง่าย เนื่องจากคุณสามารถย้ายจุดแทรกได้โดยใช้ปุ่มลูกศรบนแป้นพิมพ์ หรือโดยการคลิกเมาส์เพื่อค้นหาจุดแทรกทุกที่ที่คุณต้องการ แต่เมื่อคุณมีเอกสารขนาดใหญ่ที่มีหลายหน้า เทคนิคพื้นฐานเหล่านี้จะไม่เพียงพอ
บทความนี้จะอธิบายวิธีการเลื่อนไปมาในเอกสารและนำทางด้วยเคอร์เซอร์เสมือนไปยังส่วนต่างๆ ของเอกสาร
การตรวจจับตำแหน่งเคอร์เซอร์ปัจจุบัน
ก่อนที่จะเริ่มกระบวนการนำทางผ่านเอกสารของคุณ คุณจะต้องได้รับโหนดที่เลือกไว้ในปัจจุบัน คุณสามารถรับตำแหน่งที่แน่นอนของเคอร์เซอร์ที่โหนดที่เลือกได้โดยใช้คุณสมบัติ current_node นอกจากนี้ แทนที่จะรับโหนดปัจจุบัน คุณสามารถรับย่อหน้าที่เลือกในปัจจุบันหรือส่วนที่เลือกในปัจจุบันได้โดยใช้คุณสมบัติ current_paragraph และ current_section
การดำเนินการแทรกใดๆ ที่คุณดำเนินการโดยใช้ DocumentBuilder จะถูกแทรกก่อน current_node เมื่อย่อหน้าปัจจุบันว่างเปล่าหรือเคอร์เซอร์อยู่ในตำแหน่งก่อนจุดสิ้นสุดของย่อหน้า current_node จะส่งกลับไม่มี
วิธีการนำทางในเอกสาร
เมื่อคุณแก้ไขข้อความ สิ่งสำคัญคือต้องรู้วิธีไปยังส่วนต่างๆ ในเอกสารและตำแหน่งที่จะย้ายไปในเอกสารอย่างชัดเจน Aspose.Words ช่วยให้คุณสามารถเลื่อนไปมาในเอกสารและนำทางไปยังส่วนและส่วนต่างๆ ของเอกสาร ซึ่งคล้ายกับฟังก์ชันของบานหน้าต่างนำทางใน Microsoft Word เพื่อไปที่หน้าหรือหัวข้อในเอกสาร Word โดยไม่ต้องเลื่อน
วิธีการหลักคือการสามารถย้ายตำแหน่งเคอร์เซอร์ไปยังโหนดเฉพาะในเอกสารของคุณได้ คุณสามารถทำได้โดยใช้วิธี move_to
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีย้าย DocumentBuilder ไปยังโหนดต่างๆ ในเอกสาร:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
# Start a bookmark and add content to it using a DocumentBuilder. | |
builder.start_bookmark("MyBookmark") | |
builder.writeln("Bookmark contents.") | |
builder.end_bookmark("MyBookmark") | |
# The node that the DocumentBuilder is currently at is past the boundaries of the bookmark. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_end, builder.current_paragraph.first_child) | |
# If we wish to revise the content of our bookmark with the DocumentBuilder, we can move back to it like this. | |
builder.move_to_bookmark("MyBookmark") | |
# Now we're located between the bookmark's BookmarkStart and BookmarkEnd nodes, so any text the builder adds will be within it. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_start, builder.current_paragraph.first_child) | |
# We can move the builder to an individual node, | |
# which in this case will be the first node of the first paragraph, like this. | |
builder.move_to(doc.first_section.body.first_paragraph.get_child_nodes(aw.NodeType.ANY, False)[0]) | |
self.assertEqual(aw.NodeType.BOOKMARK_START, builder.current_node.node_type) | |
self.assertTrue(builder.is_at_start_of_paragraph) | |
# A shorter way of moving the very start/end of a document is with these methods. | |
builder.move_to_document_end() | |
self.assertTrue(builder.is_at_end_of_paragraph) | |
builder.move_to_document_start() | |
self.assertTrue(builder.is_at_start_of_paragraph) |
แต่นอกเหนือจากวิธี move_to พื้นฐานแล้ว ยังมีวิธีที่เฉพาะเจาะจงมากกว่าอีกด้วย
นำทางไปยังจุดเริ่มต้นหรือจุดสิ้นสุดของเอกสาร
คุณสามารถไปที่จุดเริ่มต้นหรือจุดสิ้นสุดของเอกสารโดยใช้วิธี move_to_document_start และ move_to_document_end
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการย้ายตำแหน่งเคอร์เซอร์ไปที่จุดเริ่มต้นหรือจุดสิ้นสุดของเอกสาร:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
# Move the cursor position to the beginning of your document. | |
builder.move_to_document_start() | |
print("\nThis is the beginning of the document.") | |
# Move the cursor position to the end of your document. | |
builder.move_to_document_end() | |
print("\nThis is the end of the document.") |
นำทางด้วยบุ๊กมาร์ก
คุณสามารถทำเครื่องหมายสถานที่ที่คุณต้องการค้นหาและย้ายไปยังสถานที่นั้นอีกครั้งได้อย่างง่ายดาย คุณสามารถแทรกบุ๊กมาร์กลงในเอกสารของคุณได้มากเท่าที่คุณต้องการ จากนั้นนำทางผ่านบุ๊กมาร์กเหล่านั้นด้วยการระบุบุ๊กมาร์กที่มีชื่อเฉพาะ คุณสามารถย้ายไปยังบุ๊กมาร์กได้โดยใช้วิธี move_to_bookmark
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการย้ายตำแหน่งเคอร์เซอร์ไปที่บุ๊กมาร์ก:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
# Start a bookmark and add content to it using a DocumentBuilder. | |
builder.start_bookmark("MyBookmark") | |
builder.writeln("Bookmark contents.") | |
builder.end_bookmark("MyBookmark") | |
# The node that the DocumentBuilder is currently at is past the boundaries of the bookmark. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_end, builder.current_paragraph.first_child) | |
# If we wish to revise the content of our bookmark with the DocumentBuilder, we can move back to it like this. | |
builder.move_to_bookmark("MyBookmark") | |
# Now we're located between the bookmark's BookmarkStart and BookmarkEnd nodes, so any text the builder adds will be within it. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_start, builder.current_paragraph.first_child) | |
# We can move the builder to an individual node, | |
# which in this case will be the first node of the first paragraph, like this. | |
builder.move_to(doc.first_section.body.first_paragraph.get_child_nodes(aw.NodeType.ANY, False)[0]) |
นำทางไปยังเซลล์ตาราง
คุณสามารถย้ายไปยังเซลล์ตารางได้โดยใช้วิธี move_to_cell วิธีนี้จะช่วยให้คุณเลื่อนเคอร์เซอร์ไปที่เซลล์ใดก็ได้ในตารางที่ต้องการได้ นอกจากนี้ คุณยังสามารถระบุดัชนีเพื่อย้ายเคอร์เซอร์ไปยังตำแหน่งใดๆ หรืออักขระที่ระบุในเซลล์ภายในวิธี move_to_cell
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการย้ายตำแหน่งเคอร์เซอร์ไปยังเซลล์ตารางที่ระบุ:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Tables.docx") | |
builder = aw.DocumentBuilder(doc) | |
# Move the builder to row 3, cell 4 of the first table. | |
builder.move_to_cell(0, 2, 3, 0) | |
builder.write("\nCell contents added by DocumentBuilder") | |
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table() | |
self.assertEqual(table.rows[2].cells[3], builder.current_node.parent_node.parent_node) | |
self.assertEqual("Cell contents added by DocumentBuilderCell 3 contents\a", table.rows[2].cells[3].get_text().strip()) |
นำทางไปยังฟิลด์
คุณสามารถย้ายไปยังช่องเฉพาะในเอกสารของคุณได้โดยใช้วิธี move_to_field นอกจากนี้ คุณยังสามารถย้ายไปยังเขตข้อมูลผสานเฉพาะได้โดยใช้วิธี move_to_merge_field
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการย้ายเคอร์เซอร์ตัวสร้างเอกสารไปยังฟิลด์เฉพาะ:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
# Insert a field using the DocumentBuilder and add a run of text after it. | |
field = builder.insert_field("MERGEFIELD field") | |
builder.write(" Text after the field.") | |
# The builder's cursor is currently at end of the document. | |
self.assertIsNone(builder.current_node) | |
# We can move the builder to a field like this, placing the cursor at immediately after the field. | |
builder.move_to_field(field, True) | |
# Note that the cursor is at a place past the FieldEnd node of the field, meaning that we are not actually inside the field. | |
# If we wish to move the DocumentBuilder to inside a field, | |
# we will need to move it to a field's FieldStart or FieldSeparator node using the DocumentBuilder.move_to() method. | |
self.assertEqual(field.end, builder.current_node.previous_sibling) | |
builder.write(" Text immediately after the field.") |
นำทางไปยังส่วนหัวหรือส่วนท้าย
คุณสามารถย้ายไปยังจุดเริ่มต้นของส่วนหัวหรือส่วนท้ายได้โดยใช้วิธี move_to_header_footer
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการย้ายเคอร์เซอร์ตัวสร้างเอกสารไปยังส่วนหัวหรือส่วนท้ายของเอกสาร:
นำทางไปยังส่วนหรือย่อหน้า
คุณสามารถย้ายไปยังส่วนหรือย่อหน้าที่ต้องการได้โดยใช้วิธี move_to_paragraph หรือ move_to_section นอกจากนี้ คุณยังสามารถระบุดัชนีเพื่อย้ายเคอร์เซอร์ไปยังตำแหน่งใดๆ หรืออักขระที่ระบุในย่อหน้าภายในวิธีการ move_to_paragraph
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการย้ายไปยังส่วนเฉพาะและย่อหน้าเฉพาะในเอกสาร:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
doc.append_child(aw.Section(doc)) | |
# Move a DocumentBuilder to the second section and add text. | |
builder = aw.DocumentBuilder(doc) | |
builder.move_to_section(1) | |
builder.writeln("Text added to the 2nd section.") | |
# Create document with paragraphs. | |
doc = aw.Document(docs_base.my_dir + "Paragraphs.docx") | |
paragraphs = doc.first_section.body.paragraphs | |
self.assertEqual(22, paragraphs.count) | |
# When we create a DocumentBuilder for a document, its cursor is at the very beginning of the document by default, | |
# and any content added by the DocumentBuilder will just be prepended to the document. | |
builder = aw.DocumentBuilder(doc) | |
self.assertEqual(0, paragraphs.index_of(builder.current_paragraph)) | |
# You can move the cursor to any position in a paragraph. | |
builder.move_to_paragraph(2, 10) | |
self.assertEqual(2, paragraphs.index_of(builder.current_paragraph)) | |
builder.writeln("This is a new third paragraph. ") | |
self.assertEqual(3, paragraphs.index_of(builder.current_paragraph)) |