การทำงานกับสไตล์
การทำงานกับสไตล์
คำแนะนำนี้แสดงวิธีการทำงานกับสไตล์ย่อหน้า, ตัวอักษร, ตาราง, และรายการใน Aspose.Words FOSS สำหรับ .NET — ค้นหาและใช้สไตล์ที่มีมาในตัวและสไตล์ที่กำหนดเอง, และกำหนดค่าการจัดรูปแบบตามเงื่อนไขต่อภูมิภาคบนสไตล์ตาราง.
อ็อบเจ็กต์ Style แสดงถึงสไตล์เดียวที่เป็นแบบในตัวหรือที่ผู้ใช้กำหนด — คอลเลกชันที่มีชื่อของการจัดรูปแบบย่อหน้า, ฟอนต์, และรายการที่ Word ใช้เมื่อย่อหน้าหรือรันถูกกำหนดสไตล์นั้น ทุกเอกสารเปิดเผยสไตล์ของมันผ่านคุณสมบัติ Document.Styles ซึ่งส่งคืน StyleCollection สไตล์ตารางจะถูกแทนด้วย TableStyle, คลาสย่อยของ Style ที่เพิ่มการจัดรูปแบบเฉพาะตารางและการจัดรูปแบบตามเงื่อนไขแบบพื้นที่ต่อพื้นที่ผ่าน ConditionalStyleCollection.
ประเภทสไตล์และการระบุ
แต่ละ Style มีคุณสมบัติ Type ชนิด StyleType, ซึ่งเป็นหนึ่งใน Paragraph, Character, Table, หรือ List — ตรงกับสี่ประเภทของสไตล์ที่ Word รองรับ สไตล์ที่มีอยู่แล้วยังมีค่า enum StyleIdentifier ที่ไม่ขึ้นกับภาษาท้องถิ่น (เช่นค่าที่สอดคล้องกับสไตล์หัวข้อ, เน้น, และไฮเปอร์ลิงก์) เพื่อให้โค้ดสามารถค้นหาสไตล์ที่มีอยู่โดยไม่ต้องพึ่งพาชื่อที่แสดงในภาษาที่เฉพาะเจาะจง ชื่อที่มนุษย์อ่านได้ของสไตล์สามารถเข้าถึงได้ผ่าน Style.Name, และ Style.Aliases จะคืนชื่อทางเลือกใด ๆ ที่ Word รับรู้สำหรับสไตล์เดียวกัน Style.BuiltIn รายงานว่าสตไลล์นั้นมาพร้อมกับ Word เองหรือถูกกำหนดในเอกสาร, และ Style.IsHeading รายงานว่าสไตล์นั้นเป็นหนึ่งในสไตล์หัวข้อที่มีในตัว.
การเข้าถึงและจัดการคอลเลกชันสไตล์
StyleCollection คือคอลเลกชันของอ็อบเจ็กต์ Style ทั้งหมด — ทั้งที่มีในตัวและที่กำหนดเอง — ที่แนบกับเอกสาร, เข้าถึงได้ผ่าน Document.Styles. ดึงสไตล์โดยใช้ชื่อที่แสดงด้วยตัวจัดทำดัชนี StyleCollection — styles[name] — หรือดึงสไตล์ที่มีในตัวโดยใช้ StyleIdentifier ที่ไม่ขึ้นกับภาษาท้องถิ่นด้วยตัวจัดทำดัชนีเดียวกัน — styles[sti] — ซึ่งน่าเชื่อถือกว่าการค้นหาชื่อในเอกสารที่เขียนด้วยภาษาต่าง ๆ สไตล์ใหม่สร้างด้วย StyleCollection.Add(type, name), ระบุ StyleType และชื่อ, และสไตล์ที่มีอยู่สามารถทำสำเนาไปยังคอลเลกชันด้วย StyleCollection.AddCopy(style). StyleCollection.Count รายงานจำนวนสไตล์ที่เอกสารมี, และคอลเลกชันยังเปิดเผย DefaultFont และ DefaultParagraphFormat, ซึ่งอธิบายการจัดรูปแบบค่าเริ่มต้นระดับเอกสารที่เนื้อหาใหม่สืบทอดก่อนที่สไตล์ใด ๆ จะถูกนำมาใช้อย่างชัดเจน StyleCollection.ClearQuickStyleGallery() ลบสไตล์ทั้งหมดจากแกลเลอรีสไตล์ด่วนของ UI Word โดยไม่ลบสไตล์เอง.
การใช้สไตล์กับย่อหน้าและรัน
อ็อบเจ็กต์การจัดรูปแบบที่สามารถมีสไตล์จะเปิดเผยทั้งคุณสมบัติ Style (อ็อบเจ็กต์ Style เอง) และคุณสมบัติ StyleName (ทางลัดที่แก้ไขหรือสร้างสไตล์ตามชื่อ) ParagraphFormat.Style และ ParagraphFormat.StyleName ใช้สไตล์ย่อหน้า ในขณะที่ Font.Style และ Font.StyleName ใช้สไตล์อักขระกับการจัดรูปแบบของรัน คุณสมบัติ LinkedStyleName, BaseStyleName, และ NextParagraphStyleName ของสไตล์อธิบายว่ามันสัมพันธ์กับสไตล์อื่นอย่างไร: BaseStyleName ระบุชื่อสไตล์ที่สืบทอดการจัดรูปแบบที่ไม่ได้ตั้งค่า, LinkedStyleName ระบุสไตล์ย่อหน้า/อักขระที่จับคู่กัน (เช่น Word ทำกับสไตล์ในตัวอย่างเช่น Heading 1 และสไตล์อักขระที่เชื่อมโยง), และ NextParagraphStyleName ระบุชื่อสไตล์ที่ Word กำหนดให้กับย่อหน้าใหม่ที่พิมพ์หลังจากใช้สไตล์นี้.
สไตล์ตารางและการจัดรูปแบบเชิงเงื่อนไข
TableStyle ขยาย Style ด้วยคุณสมบัติการจัดวางตารางเช่น Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment และการเว้นระยะ (padding) (LeftPadding, RightPadding, TopPadding, BottomPadding) พร้อมกับ RowStripe และ ColumnStripe ซึ่งควบคุมจำนวนแถวหรือคอลัมน์ที่รูปแบบลายแถบทำซ้ำได้ นอกจากการจัดรูปแบบตารางแบบสม่ำเสมอแล้ว TableStyle.ConditionalStyles ส่งคืน ConditionalStyleCollection ที่เก็บ ConditionalStyle หนึ่งรายการต่อบริเวณตาราง — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding และสี่เซลล์มุม (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell) แต่ละ ConditionalStyle มี Font, ParagraphFormat, Shading, Borders ของตนเองและการเว้นระยะของเซลล์ และคุณสมบัติ Type ของมันรายงานว่ามันเป็นตัวแทนของบริเวณ ConditionalStyleType ใด ConditionalStyle.ClearFormatting() และ ConditionalStyleCollection.ClearFormatting() รีเซ็ตการจัดรูปแบบสำหรับหนึ่งบริเวณหรือชุดของบริเวณเชิงเงื่อนไขทั้งหมด.
เมทาดาท่าสไตล์และธงพฤติกรรม
คุณสมบัติแบบบูลีนและจำนวนหลายรายการบน Style ควบคุมวิธีที่ Word ปฏิบัติสไตล์ใน UI แทนที่จะเป็นวิธีการแสดงผล: Locked ป้องกันไม่ให้สไตล์ถูกเปลี่ยนแปลงเมื่อการป้องกันการจัดรูปแบบทำงานอยู่, IsQuickStyle ควบคุมว่ามันจะแสดงในแกลเลอรีสไตล์ด่วนหรือไม่, AutomaticallyUpdate ทำให้สไตล์กำหนดค่าตัวเองใหม่จากการจัดรูปแบบโดยตรงที่กำหนดด้วยมือ, SemiHidden และ UnhideWhenUsed ควบคุมการมองเห็นในรายการสไตล์ก่อนและหลังการใช้ครั้งแรก, และ Priority มีผลต่อลำดับการจัดเรียงในแกลเลอรี สไตล์ยังเปิดเผยคุณสมบัติ List และ ListFormat เมื่อตั้งค่าการจัดลำดับรายการ, และ Style.Remove() ลบสไตล์จาก StyleCollection ของมัน.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ควรใช้ดัชนี
StyleCollectionพร้อมค่าที่เป็นStyleIdentifierแทนการค้นหาด้วยชื่อเมื่อต้องการค้นหาสไตล์ในตัว — ชื่อจะถูกแปลเป็นภาษาท้องถิ่น แต่ค่าของStyleIdentifierไม่ได้. - ตั้งค่า
BaseStyleNameเพื่อสร้างลำดับชั้นของสไตล์ (เช่น ชุดสไตล์หัวเรื่องที่ทั้งหมดสืบทอดการเลือกแบบอักษรจากสไตล์ฐานหนึ่ง) แทนการทำซ้ำการจัดรูปแบบในแต่ละสไตล์. - เมื่อต้องคัดลอกสไตล์ระหว่างเอกสาร ให้ใช้
StyleCollection.AddCopy(style)แทนการอ่านและนำคุณสมบัติการจัดรูปแบบทั้งหมดกลับมาใช้ด้วยตนเอง. - กำหนดค่าพื้นที่
TableStyle.ConditionalStylesสำหรับตารางที่มีแถบสีแทนการจัดรูปแบบแถวสลับด้วยโค้ดด้วยตนเอง — การจัดรูปแบบของแต่ละพื้นที่ConditionalStyleจะถูกนำไปใช้ตามConditionalStyleTypeของมัน แทนการตั้งค่าการจัดรูปแบบโดยตรงบนแถวแต่ละแถว. - ตรวจสอบ
Style.BuiltInก่อนทำการลบหรือเปลี่ยนชื่อสไตล์โดยโปรแกรม; สไตล์ที่มีอยู่ในตัวมักจะถูกอ้างอิงด้วยชื่อในส่วนอื่นของเอกสาร.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
StyleCollection indexer คืนค่า null สำหรับการค้นหาชื่อ | ชื่อสไตล์ไม่มีในเอกสารนี้, หรือสไตล์ที่มีมาในตัวยังไม่ได้ถูกใช้งานจึงทำให้ Word ยังไม่ได้สร้างมันขึ้นมา | ตรวจสอบ Style.Aliases เพื่อหาชื่อทางเลือก หรือใช้ตัวจัดทำดัชนี StyleCollection พร้อม StyleIdentifier สำหรับสไตล์ที่มีมาในตัวแทน |
การตั้งค่า StyleName อย่างไม่คาดคิดจะสร้างสไตล์ใหม่ | StyleName จะสร้างสไตล์ที่ระบุหากยังไม่มีอยู่ในคอลเลกชัน | ใช้ตัวจัดทำดัชนี StyleCollection ก่อนเพื่อยืนยันว่ามีสไตล์อยู่แล้ว หรือกำหนดอ็อบเจกต์ Style โดยตรงผ่านคุณสมบัติ Style |
การแถบตารางไม่ปรากฏหลังจากใช้ TableStyle | บริเวณการจัดรูปแบบเชิงเงื่อนไข (OddRowBanding, EvenRowBanding เป็นต้น) ไม่ได้ถูกกำหนดค่าไว้บน TableStyle.ConditionalStyles แต่อย่างใด | ตั้งค่าการจัดรูปแบบบนรายการ ConditionalStyle ที่เกี่ยวข้องใน ConditionalStyleCollection |
| การเปลี่ยนสไตล์จะไม่ส่งผลต่อเนื้อหาที่ใช้สไตล์นั้นอยู่แล้ว | การจัดรูปแบบโดยตรง (ด้วยตนเอง) ถูกนำไปใช้เหนือสไตล์และมีลำดับความสำคัญเหนือกว่า | ล้างการจัดรูปแบบโดยตรงบนรัน/ย่อหน้าที่ได้รับผลกระทบ, หรือกำหนด Style.AutomaticallyUpdate |
FAQ
ฉันจะรับชุดของสไตล์ทั้งหมดในเอกสารได้อย่างไร?
อ่าน Document.Styles ซึ่งจะคืนค่า StyleCollection ที่บรรจุ Style ทั้งหมดที่เป็นแบบในตัวและแบบที่ผู้ใช้กำหนดไว้ในเอกสารนั้น.
ความแตกต่างระหว่าง Style และ StyleIdentifier คืออะไร?
Style เป็นอ็อบเจ็กต์สไตล์ที่แท้จริงพร้อมการจัดรูปแบบของมัน; StyleIdentifier เป็นค่า enum ที่ไม่ขึ้นกับภาษาท้องถิ่นใช้เพื่อค้นหาค่าเฉพาะ ในตัว สไตล์โดยไม่คำนึงถึงภาษาของเอกสาร, ผ่าน StyleCollection ตัวทำดัชนี.
สไตล์ตารางแตกต่างจากสไตล์ย่อหน้า หรือสไตล์อักขระอย่างไร?
TableStyle คือคลาสย่อยของ Style ที่เพิ่มคุณสมบัติการจัดเลย์เอาต์ตาราง (Alignment, CellSpacing, padding) และคอลเลกชัน ConditionalStyles สำหรับการจัดรูปแบบเฉพาะพื้นที่เช่น แถวแบบเป็นแถบ, แถวหัวตาราง, และเซลล์มุม — แนวคิดการจัดรูปแบบที่ไม่ใช้กับสไตล์ย่อหน้า หรือสไตล์อักขระ.
ฉันสามารถสร้างสไตล์ใหม่ทั้งหมดแทนการแก้ไขสไตล์ที่มีอยู่ได้หรือไม่?
ใช่ — เรียก StyleCollection.Add(type, name) พร้อมกับ StyleType ที่ต้องการและชื่อใหม่เพื่อสร้างสไตล์ว่าง จากนั้นตั้งค่าคุณสมบัติการจัดรูปแบบของมัน (Font, ParagraphFormat และอื่น ๆ สำหรับสไตล์ย่อหน้า/อักขระ).
ฉันจะทำสำเนาสไตล์ซ้ำได้อย่างไร รวมถึงจากเอกสารอื่น?
ใช้ StyleCollection.AddCopy(style) โดยส่งอ็อบเจ็กต์ Style (ซึ่งอาจมาจาก Document’s StyleCollection) เพื่อเพิ่มสำเนาของมันไปยังคอลเลกชันเป้าหมาย.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Style | สไตล์ย่อหน้า ตัวอักษร ตาราง หรือรายการแบบเดียวที่เป็นของในตัวหรือกำหนดโดยผู้ใช้ |
StyleCollection | คอลเลกชันของสไตล์ทั้งหมดในเอกสารที่เข้าถึงได้ผ่าน Document.Styles |
StyleCollection ดัชนีตามชื่อ | ค้นหาสไตล์โดยใช้ชื่อที่แสดง, เช่น styles["Heading 1"] |
StyleCollection ดัชนีโดยใช้ตัวระบุ | ค้นหาสไตล์ในตัวโดยใช้ตัวระบุที่ไม่ขึ้นกับภาษาท้องถิ่น, เช่น styles[StyleIdentifier.Heading1] |
StyleCollection.Add(type, name) | สร้างสไตล์ใหม่ที่ว่างเปล่าสำหรับ StyleType |
StyleCollection.AddCopy(style) | คัดลอกสไตล์ที่มีอยู่แล้วเข้าสู่คอลเลกชันนี้ |
StyleType | Enum ที่แยกแยะสไตล์ Paragraph, Character, Table และ List |
StyleIdentifier | ตัวระบุที่ไม่ขึ้นกับโลคัลสำหรับสไตล์ในตัว |
TableStyle | คลาสย่อย Style สำหรับการจัดรูปแบบตาราง, รวมถึงการจัดสไตล์ตามเงื่อนไขของแต่ละภูมิภาค |
ConditionalStyleCollection | ชุดของรายการ ConditionalStyle ตามภูมิภาคบน TableStyle |
ConditionalStyle | การจัดรูปแบบ (แบบอักษร, รูปแบบย่อหน้า, เงา, เส้นขอบ, การเว้นระยะ) สำหรับหนึ่งภูมิภาคของตาราง |
ConditionalStyleType | Enum ระบุว่าภูมิภาคของตารางใดที่ ConditionalStyle ใช้ |