---
title: "การทำงานกับรูปแบบในC++"
---


คลาส[StyleCollection](https://reference.aspose.com/words/cpp/aspose.words/stylecollection/)จะใช้ในการจัดการในตัวและใช้การตั้งค่าที่ผู้ใช้กำหนดกับรูปแบบ.

## วิธีการแยกเนื้อหาตามรูปแบบ

ในระดับง่ายเรียกเนื้อหาตามลักษณะจากเอกสารคำจะมีประโยชน์ในการระบุรายการแล ตัวอย่างเช่นคุณอาจต้องระบุชนิดของเนื้อหาในเอกสารเช่นตัวอย่างชื่ออ้างอิงคำสำคัญชื่อ.

เพื่อใช้ขั้นตอนต่อไปนี้อีกสองสามขั้นตอนนอกจากนี้ยังสามารถใช้เพื่อใช้ประโยชน์จากโครงสร้างของเอกสารที่กำหนดโดยสไตล์ที่ใช้เพื่อวัตถุประสงค์เอกสารใหม่สำหรับเอาต์พุตอื่นเช่นHTML ในความเป็นจริงวิธีการสร้างเอกสารแอสโพส,วางAspose.Wordsเพื่อทดสอบ. เครื่องมือที่สร้างขึ้นโดยใช้Aspose.Wordsจะใช้เอกสารคำต้นฉบับและแยกออกเป็นหัวข้อในระดับหัวข้อ ไฟล์XMLถูกผลิตโดยใช้Aspose.Wordsซึ่งใช้ในการสร้างต้นไม้นำทางที่คุณสามารถดูได้ทางด้านซ้าย แล้วAspose.Wordsแปลงแต่ละหัวข้อในHTML.

การแก้ปัญหาสำหรับการดึงข้อความที่จัดรูปแบบด้วยลักษณะเฉพาะในเอกสารคำโดยทั่วไปจะประหยัดและตรงไปตรงมาโดยใช้Aspose.Words.

### การแก้ปัญหา

เพื่อแสดงให้เห็นAspose.Wordsจัดการกับการดึงเนื้อหาตามสไตล์ได้อย่างง่ายดายเพียงใดลองดูตัวอย่าง ในตัวอย่างนี้เรากำลังจะดึงข้อความที่จัดรูปแบบด้วยลักษณะย่อหน้าเฉพาะและลักษณะตัวอัก ในระดับสูงนี้จะเกี่ยวข้องกับ:
- การเปิดเอกสารคำโดยใช้คลาส`Document`.
- การรับคอลเล็กชันของย่อหน้าทั้งหมดและทั้งหมดทำงานในเอกสาร.
- เลือกเฉพาะย่อหน้าที่ต้องการและรัน โดยเฉพาะอย่างยิ่งเราจะดึงข้อความที่จัดรูปแบบด้วยรูปแบบย่อหน้า'หัวข้อ1'และรูปแบบตัวอัก.

![working-with-styles-aspose-words-cpp-1](working-with-styles-1.png)


ในเอกสารตัวอย่างนี้ข้อความที่จัดรูปแบบด้วยรูปแบบ'หัวข้อ1'ย่อหน้าคือ'แทรกแท็บ','รูปแบบด่วน'และ'ธีม'และข้อความที่จัดรูปแบบด้วยรูปแบบอักขระ'เน้นเข้มข้น'คือหลายกรณีของข้อความสีฟ้าตัวเอียงตัวหนาเช่น'แกลเลอรี่'และ'รูปลักษณ์โดยรวม'.

### รหัส

การดำเนินงานของแบบสอบถามตามสไตล์ค่อนข้างง่ายในAspose.Wordsรูปแบบวัตถุเอกสาร,มันเป็นเพีย ใช้สองวิธีแบบคลาสสำหรับโซลูชันนี้:#**ParagraphsByStyleName**-วิธีนี้ดึงอาร์เรย์ของย่อหน้าเหล่านั้นในเอกสารที่มีชื่อลัก#**RunsByStyleName**-วิธีนี้ดึงอาร์เรย์ของผู้ที่รันในเอกสารที่มีชื่อสไตล์ที่เฉพาะเจาะจง ทั้งสองวิธีเหล่านี้จะคล้ายกันมากความแตกต่างเพียงอย่างเดียวคือชนิดโหนดและการแส นี่คือการดำเนินงานของParagraphsByStyleName ตัวอย่างด้านล่างค้นหาย่อหน้าทั้งหมดที่จัดรูปแบบด้วยสไตล์ที่ระบุ.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ExtractContentBasedOnStyles-ParagraphsByStyleName.cpp" >}}

{{% alert color="primary" %}}

การนำไปใช้ยังใช้วิธีการ`Document.GetChildNodes`ของคลาสของ`Document`ซึ่งจะส่งคืนคอลเล็กชันของโหนดทั้งหมดที่มีประเภ.

โปรดทราบว่าพารามิเตอร์ที่สองของวิธีการ**Document.GetChildNodes**ถูกตั้งค่าเป็นจริง บังคับวิธีการ**Document.GetChildNodes**เพื่อเลือกจากโหนดย่อยทั้งหมดแบบซ้ำๆแทนที่จะเลือกย่อยย่อทันทีเท่านั้น.

{{% /alert %}}

นอกจากนี้ยังมีมูลค่าชี้ให้เห็นว่าคอลเลกชันย่อหน้าไม่ได้สร้างค่าใช้จ่ายทันทีเนื่องจากย่อห จากนั้นสิ่งที่คุณต้องทำคือผ่านคอลเล็กชันโดยใช้มาตรฐานสำหรับแต่ละโอเปอเรเตอร์และเพิ่มย่อหน้าที่มีลักษณะที่ระบุไว้ในอาร์เรย์paragraphsWithStyle ชื่อสไตล์`Paragraph`จะพบได้ในสไตล์ คุณสมบัติชื่อของออบเจกต์`Paragraph.ParagraphFormat` การดำเนินงานของRunsByStyleNameเกือบจะเหมือนกันแม้ว่าเราจะเห็นได้ชัดว่าใช้`NodeType.Run`เพื่อดึงโหนดเรียกใช้ คุณสมบัติ`Font.Style`ของออบเจกต์`Run`ถูกใช้เพื่อเข้าถึงข้อมูลลักษณะในโหนด**Run** ตัวอย่างเป็นlow codeค้นหารันทั้งหมดที่จัดรูปแบบด้วยสไตล์ที่ระบุ.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ExtractContentBasedOnStyles-RunsByStyleName.cpp" >}}


เมื่อการสืบค้นทั้งสองอย่างถูกนำมาใช้ทั้งหมดที่คุณต้องทำคือการส่งผ่านอ็อบเจ็กต์เอกสาร คุณสามารถดาวน์โหลดไฟล์แม่แบบของตัวอย่างนี้ได้จากที่นี่.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ExtractContentBasedOnStyles-ExtractContentBasedOnStyles.cpp" >}}

#### ผลลัพธ์สุดท้าย

เมื่อทุกอย่างเสร็จสิ้นการทำงานตัวอย่างจะแสดงผลลัพธ์ต่อไปนี้:

![working-with-styles-aspose-words-cpp-2](working-with-styles-2.png)


ที่คุณสามารถดูนี้เป็นตัวอย่างที่ง่ายมากแสดงให้เห็นจำนวนและข้อความของย่อหน้าที่รวบร.

## วิธีการแทรกและทำงานกับตารางของฟิลด์เนื้อหา

บ่อยครั้งที่คุณจะทำงานกับเอกสารที่มีสารบัญ(TOC) โดยใช้Aspose.Wordsคุณสามารถแทรกตารางเนื้อหาของคุณเองหรือสร้างตารางเนื้อหาที่มีอยู่ในเอกสารโดยใช้เพียงไม่กี่บรรทัดของรหัส บทความนี้แสดงวิธีการทำงานกับตารางของฟิลด์เนื้อหาและสาธิต:

- วิธีการแทรกแบรนด์ใหม่`TOC`
- อัปเดตใหม่หรือที่มีอยู่TOCsในเอกสาร.
- ระบุสวิตช์เพื่อควบคุมการจัดรูปแบบและโครงสร้างโดยรวมของTOC.
- วิธีการปรับเปลี่ยนรูปแบบและลักษณะของสารบัญ.
- วิธีการลบฟิลด์`TOC`ทั้งหมดพร้อมกับรายการทั้งหมดจากเอกสาร.

### แทรกฟิลด์TC

มักจะมีการกำหนดบรรทัดข้อความเฉพาะสำหรับ`TOC`และถูกทำเครื่องหมายด้วยฟิลด์`TC` วิธีง่ายๆในการทำเช่นนี้ในMSคำคือการเน้นข้อความและกด*ALT+SHIFT+O* นี้จะสร้างฟิลด์`TC`โดยอัตโนมัติโดยใช้ข้อความที่เลือก เทคนิคเดียวกันสามารถทำได้ผ่านรหัส รหัสด้านล่างจะพบข้อความที่ตรงกับการป้อนข้อมูลและแทรกช่อง`TC`ในตำแหน่งเดียวกับข้อค รหัสจะขึ้นอยู่กับเทคนิคเดียวกับที่ใช้ในบทความ ตัวอย่างด้านล่างแสดงวิธีการค้นหาและแทรกฟิลด์`TC`ที่ข้อความในเอกสาร.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-DocumentBuilderInsertTCFieldsAtText-DocumentBuilderInsertTCFieldsAtText.cpp" >}}

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-DocumentBuilderInsertTCFieldsAtText-InsertTCFieldHandler.cpp" >}}

### แก้ไขสารบัญ

#### เปลี่ยนรูปแบบของรูปแบบ

การจัดรูปแบบของรายการใน`TOC`ไม่ได้ใช้สไตล์ดั้งเดิมของรายการที่ทำเครื่องหมายไว้แต่ละระดับจะถูกจัดรูปแบบโดยใช้สไตล์ที่เทียบเท่า`TOC` ตัวอย่างเช่นระดับแรกใน`TOC`ถูกจัดรูปแบบด้วยสไตล์**TOC1**ระดับที่สองจัดรูปแบบด้วยสไตล์**TOC2**และอื่นๆ ลี่ยนรูปลักษณ์ของ`TOC`ลักษณะเหล่านี้ต้องถูกแก้ไข ในAspose.Wordsลักษณะเหล่านี้จะแสดงโดยโลแคลอิสระ`StyleIdentifier.TOC1`ถึง`StyleIdentifier.TOC9`และสามารถดึงข้อมูลจากคอลเล็กชัน`Document.Styles`โดยใ เมื่อมีการดึงข้อมูลลักษณะที่เหมาะสมของเอกสารแล้วการจัดรูปแบบสำหรับลักษณะนี้สามา การเปลี่ยนแปลงลักษณะเหล่านี้จะปรากฏขึ้นโดยอัตโนมัติบนTOCsในเอกสาร ตัวอย่างพีlow codeเปลี่ยนคุณสมบัติการจัดรูปแบบที่ใช้ในลักษณะระดับแรก`TOC`.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ChangeStyleOfTOCLevel-ChangeStyleOfTOCLevel.cpp" >}}

นอกจากนี้ยังเป็นประโยชน์ที่จะต้องทราบว่าการจัดรูปแบบโดยตรงของย่อหน้า(ที่กำหนดไว้ในย่อหน้าเองและไม่ได้อยู่ในสไตล์)ที่ทำเครื่องหมายให้รวม`TOC`จะถูกคัดลอกในรายการในTOC ตัวอย่างเช่นหากใช้สไตล์ส่วนหัว1เพื่อทำเครื่องหมายเนื้อหาสำหรับ`TOC`และสไตล์นี้มีการจัดรูป รายการผลลัพธ์`TOC`จะไม่เป็นตัวหนาเนื่องจากเป็นส่วนหนึ่งของการจัดรูปแบบสไตล์อย่างไรก็ตามมันจะเป็นตัวเอียงเนื่องจากมีการจัดรูปแบบโดยตรงในย่อหน้า นอกจากนี้คุณยังสามารถควบคุมการจัดรูปแบบของตัวคั่นที่ใช้ระหว่างแต่ละรายการและหม โดยค่าเริ่มต้น,นี้เป็นเส้นประที่กระจายไปทั่วไปยังหมายเลขหน้าโดยใช้อักขระแท็บและหยุด.

ใช้`Style`คลาสที่ดึงสำหรับระดับ`TOC`เฉพาะที่คุณต้องการปรับเปลี่ยน,คุณยังสามารถปรับเปลี่ยนวิธี เมื่อต้องการเปลี่ยนวิธีการนี้ปรากฏขึ้นในตอนแรก`Style.ParagraphFormat`ต้องถูกเรียกใช้เพื่อเรียกการจัดรูปแบบย่อหน้าสำหรับสไตล์ จากนี้แท็บหยุดสามารถเรียกดูได้โดยเรียก`ParagraphFormat.TabStops`และแท็บหยุดที่เหมาะสมแก้ไข ใช้เทคนิคเดียวกันนี้แท็บตัวเองสามารถย้ายหรือลบออกโดยสิ้นเชิง ตัวอย่างเป็นlow codeแสดงวิธีการปรับเปลี่ยนตำแหน่งของแท็บขวาหยุดใน`TOC`ย่อหน้าที่เกี่ยวข้อง. คุณสามารถดาวน์โหลดไฟล์แม่แบบของตัวอย่างนี้ได้จากที่นี่.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ChangeTOCTabStops-ChangeTOCTabStops.cpp" >}}

### การลบสารบัญออกจากเอกสาร

สารบัญสามารถลบออกจากเอกสารโดยการลบโหนดทั้งหมดที่พบระหว่าง`FieldStart`และFieldEndโหนดของ`TOC` รหัสด้านล่างแสดงให้เห็นถึงนี้ การกำจัดของฟิลด์`TOC`จะง่ายกว่าฟิลด์ปกติเนื่องจากเราไม่ได้ติดตามเขตข้อมูลที่ซ้อนกัน แต่เราตรวจสอบ`FieldEnd`โหนดเป็นประเภท`FieldType.FieldTOC`ซึ่งหมายความว่าเราได้พบจุดสิ้นสุดของปัจจุบันTOC เทคนิคนี้สามารถใช้ในกรณีนี้โดยไม่ต้องกังวลเกี่ยวกับเขตข้อมูลที่ซ้อนกันใดๆที่เราสามารถสมมติว่าเอกสารใดๆที่เกิดขึ้นอย่างถูกต้องจะไม่มีเขตข้อมูลที่ซ้อนกันอย่างเต็มที่`TOC`ภายในอีกเขตข้อมูล`TOC`. ประการแรก`FieldStart`โหนดของแต่ละ`TOC`จะถูกรวบรวมและเก็บไว้ จากนั้นระบุ`TOC`ที่ระบุไว้เพื่อให้โหนดทั้งหมดภายในฟิลด์ถูกเยี่ยมชมและเก็บไว้ จากนั้นโหนดจะถูกลบออกจากเอกสาร ตัวอย่างเป็นlow codeแสดงวิธีการลบ`TOC`ที่ระบุจากเอกสาร คุณสามารถดาวน์โหลดไฟล์แม่แบบของตัวอย่างนี้ได้จากที่นี่.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-RemoveTOCFromDocument-RemoveTOCFromDocument.cpp" >}}

## แทรกตัวคั่นสไตล์ที่จะนำรูปแบบที่แตกต่างกันย่อหน้า

สามารถเพิ่มตัวคั่นลักษณะไปยังส่วนท้ายของย่อหน้าได้โดยใช้แป้นพิมพ์ลัดMSคำ คุณลักษณะนี้ช่วยให้ลักษณะย่อหน้าต่างๆสองใช้ในย่อหน้าตรรกะหนึ่งพิมพ์ ถ้าคุณต้องการให้ข้อความบางส่วนจากจุดเริ่มต้นของหัวข้อเฉพาะปรากฏในตารางของเนื้อ ตัวอย่างเป็นlow codeแสดงวิธีแทรกตัวคั่นลักษณะเพื่อใส่ลักษณะย่อหน้าต่าง.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-InsertStyleSeparator-ParagraphInsertStyleSeparator.cpp" >}}

## คัดลอกสไตล์ทั้งหมดจากแม่แบบ

มีกรณีเมื่อคุณต้องการคัดลอกลักษณะทั้งหมดจากเอกสารหนึ่งไปยังอีก คุณสามารถใช้วิธีการ`Document.CopyStylesFromTemplate`เพื่อคัดลอกลักษณะจากเทมเพลตที่ระบุไปยังเอกสาร เมื่อสไตล์ถูกคัดลอกจากเทมเพลทไปยังเอกสารลักษณะที่เหมือนชื่อในเอกสารจะถูกนิยาม รูปแบบที่ไม่ซ้ำกันจากแม่แบบจะถูกคัดลอกไปยังเอกสาร รูปแบบที่ไม่ซ้ำกันในเอกสารยังคงเหมือนเดิม ตัวอย่างเป็นlow codeแสดงวิธีการคัดลอกลักษณะจากเอกสารหนึ่งไปยังอีก.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-CopyStyles-CopyStylesFromDocument.cpp" >}}
