עבודה עם סגנונות
עבודה עם סגנונות
מדריך זה מציג כיצד לעבוד עם סגנונות פסקה, תו, טבלה ורשימה ב Aspose.Words קוד פתוח חופשי עבור .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() מסיר את כל הסגנונות מתצוגת הסגנונות המהירה של ממשק 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 שלו וכן padding של התא, והמאפיין Type שלו מדווח איזו אזור ConditionalStyleType הוא מייצג. ConditionalStyle.ClearFormatting() ו-ConditionalStyleCollection.ClearFormatting() מאפסים עיצוב לאזור אחד או לכל קבוצת האזורים המותנים.
מטא-נתוני סגנון ודגלי התנהגות
מספר מאפיינים בוליאניים ומספריים ב-Style שולטים באופן שבו Word מתייחס לסגנון בממשק המשתמש שלו ולא באופן שבו הוא מציג: 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 האינדקסר מחזיר 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 | מניין המבדיל בין סגנונות Paragraph, Character, Table ו-List |
StyleIdentifier | מזהה בלתי תלוי במיקום עבור סגנון מובנה |
TableStyle | מחלקה משנה של Style לעיצוב טבלאות, כולל עיצוב מותנה לפי אזור |
ConditionalStyleCollection | הקבוצה של רשומות ConditionalStyle לפי אזור על TableStyle |
ConditionalStyle | עיצוב (גופן, פורמט פסקה, הצללה, גבולות, ריפוד) לאזור טבלה אחד |
ConditionalStyleType | Enum המזהה לאיזה אזור טבלה ConditionalStyle מתייחס |