การทำงานกับสไตล์

การทำงานกับสไตล์

การทำงานกับสไตล์

คำแนะนำนี้แสดงวิธีการทำงานกับสไตล์ย่อหน้า, ตัวอักษร, ตาราง, และรายการใน 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)คัดลอกสไตล์ที่มีอยู่แล้วเข้าสู่คอลเลกชันนี้
StyleTypeEnum ที่แยกแยะสไตล์ Paragraph, Character, Table และ List
StyleIdentifierตัวระบุที่ไม่ขึ้นกับโลคัลสำหรับสไตล์ในตัว
TableStyleคลาสย่อย Style สำหรับการจัดรูปแบบตาราง, รวมถึงการจัดสไตล์ตามเงื่อนไขของแต่ละภูมิภาค
ConditionalStyleCollectionชุดของรายการ ConditionalStyle ตามภูมิภาคบน TableStyle
ConditionalStyleการจัดรูปแบบ (แบบอักษร, รูปแบบย่อหน้า, เงา, เส้นขอบ, การเว้นระยะ) สำหรับหนึ่งภูมิภาคของตาราง
ConditionalStyleTypeEnum ระบุว่าภูมิภาคของตารางใดที่ ConditionalStyle ใช้

ดูเพิ่มเติม

 ภาษาไทย