עבודה עם טבלאות

עבודה עם טבלאות

עבודה עם טבלאות

טבלאות ב Aspose.Words FOSS עבור .NET מיוצגות על ידי Aspose.Words.Tables מרחב שמות: Table, Row, ו Cell יוצרות היררכיית צמתים מורכבת בת שלושה רמות היושבת בעץ המסמך לצד פסקאות. דף זה מסקר בניית טבלאות עם DocumentBuilder, עיצוב שורות ותאים, שליטה בפריסת הטבלה כולה, ומיזוג תאים.


מודל האובייקט של הטבלה

‏Table הוא CompositeNode המכיל צמתים Row, וכל Row הוא CompositeNode המכיל צמתים Cell; Cell בתורו מכיל פסקאות וייתכן שגם טבלאות מקוננות. Table.Rows מחזיר RowCollection, Row.Cells מחזיר CellCollection, ו-Body או Story אחרים חושפים כל טבלה ברמת העליונה שבה דרך המאפיין Tables, שהוא TableCollection. כל שלוש האוספים תומכים ב-Add(), Insert(), Remove(), RemoveAt(), Contains(), ו-IndexOf(). Table.EnsureMinimum(), Row.EnsureMinimum(), ו-Cell.EnsureMinimum() ממלאים כל אחד את התוכן הקטן ביותר החוקי שהצומת מסוג זה צריך (שורה ריקה, תא ריק, או פסקה ריקה, בהתאמה) לאחר עריכות תוכניתיות שמשאירות אחד ללא זה.


בניית טבלאות עם DocumentBuilder

DocumentBuilder.StartTable() מתחיל טבלה חדשה במצב הסמן, InsertCell() מוסיף תא לשורה הנוכחית, EndRow() סוגר את השורה הנוכחית, ו-EndTable() סוגר את הטבלה. הגדר את DocumentBuilder.CellFormat ו-DocumentBuilder.RowFormat לפני קריאה ל-InsertCell() או ל-EndRow() כדי ליישם עיצוב ברירת מחדל לתאים ולשורות בזמן יצירתם – מאפיינים אלה פועלים כתבנית לתוכן שהבונה מכניס לאחר מכן, ולא כתיקון רטרואקטיבי לתאים שכבר קיימים במסמך.


עיצוב תאים ושורות

Cell.CellFormat הוא מקרה של CellFormat (Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation) עם ClearFormatting() לאיפוס שלו ו-SetPaddings() כדי להגדיר את כל ארבעת הריפודים של התא בבת אחת. Row.RowFormat הוא מקרה של RowFormat (Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat) עם ClearFormatting() משלו.


עיצוב לכל הטבלה ו-AutoFit

Table עצמו חושף מאפייני פריסה – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, ונתוני נגישות דרך Title ו-Description. Table.AutoFit(AutoFitBehavior) משנה את גודל הטבלה והתאים שלה בהתאם להתנהגות שנקבעה. SetBorder() מגדיר צד גבול אחד ו-SetBorders() מגדיר כל גבול לאותו סגנון קו, רוחב וצבע בכל הטבלה; ClearBorders() ו-ClearShading() מאפסים זאת. ConvertToHorizontallyMergedCells() ממיר תאים שנמזגו על ידי התאמת רוחב לתאים המסומנים במפורש עם HorizontalMerge.


רוחבים מועדפים ורוחב תאים

PreferredWidth מייצג רוחב והיחידה שלו, נוצר באמצעות שיטות היצרן הסטטיות PreferredWidth.FromPercent() או PreferredWidth.FromPoints(); PreferredWidthType מזהה איזה סוג ערך (Auto, Percent או Points) מחזיק PreferredWidth נתון. גם Table.PreferredWidth וגם CellFormat.PreferredWidth מקבלים ערכים אלה.


תאים ממוזגים

CellFormat.HorizontalMerge ו-CellFormat.VerticalMerge (CellMerge) מציינים כיצד תא משתתף במיזוג אופקי או אנכי עם השכנים שלו. CellVerticalAlignment שולט כיצד התוכן מיושר בתוך התא בצורה אנכית, ללא תלות במצב המיזוג.


טיפים ושיטות עבודה מומלצות

  • סגור כל StartTable() עם EndRow() תואם לכל שורה ו-EndTable() סופי – שורה או טבלה שלא נסגרו משאירות את המצב הפנימי של הבונה (ועץ המסמך המתקבל) פגום.
  • הגדר DocumentBuilder.CellFormat ו-DocumentBuilder.RowFormat לפני כל קריאה ל-InsertCell() או ל-EndRow() אם שורות או תאים שונים באותה טבלה דורשים עיצוב שונה; הבונה מיישם את מה שהוגדר ברגע ההכנסה.
  • קרא ל-Table.EnsureMinimum(), Row.EnsureMinimum() או Cell.EnsureMinimum() לאחר הסרת תוכן בצורה תכנית, כך שהצומת שומרת על המבנה המינימלי התקף שמצפה Word.
  • השתמש ב-PreferredWidth.FromPercent() עבור טבלאות שצריכות להתאים לרוחב העמוד הזמין, וב-PreferredWidth.FromPoints() עבור רוחב פריסה קבוע.
  • AutoFitBehavior מתבצע כאשר אתה קורא ל-Table.AutoFit() – הוא אינו רץ באופן רצוף כאשר אתה מוסיף או מסיר תוכן, ולכן קרא לו שוב אחרי עריכות משמעותיות אם אתה צריך שהטבלה תותאם מחדש.

בעיות נפוצות

בעיהסיבהתיקון
הטבלה נראית פגומה או גורמת לשגיאה בעת השמירהשורה או הטבלה מעולם לא נסגרו עם EndRow() / EndTable()תמיד יש לצמד את StartTable() עם EndTable() הסופי, ולסגור כל שורה עם EndRow()
תאים חדשים אינם מקבלים את העיצוב שהגדרתיCellFormat / RowFormat שונו בבונה לאחר שהתאים כבר הוכנסוהגדר DocumentBuilder.CellFormat / RowFormat לפני קריאה ל-InsertCell() / EndRow() עבור תוכן זה
הטבלה לא משנה גודל כפי שאני מצפה לאחר עריכותAutoFit() משקף את מצבו של הטבלה ברגע שבו הוא נקרא, ולא באופן רציףקרא ל-Table.AutoFit(AutoFitBehavior) שוב לאחר עריכות מבניות
תאים סמוכים שנראים כאילו הם ממוזגים פועלים כתאים נפרדיםתאים נבחרו רק לפי הרוחב, ולא סומנו עם CellMergeקרא ל-Table.ConvertToHorizontallyMergedCells(), או הגדר את CellFormat.HorizontalMerge / VerticalMerge במפורש

FAQ

איך אני בונה טבלה מאפס עם DocumentBuilder?

קרא StartTable(), לאחר מכן InsertCell() עבור כל תא בשורה, EndRow() לסגירת השורה, חזור עבור שורות נוספות, ולבסוף EndTable() לסגירת הטבלה.

איך אני מגדיר רוחב טבלה באחוזים במקום רוחב קבוע?

הקצה Table.PreferredWidth = PreferredWidth.FromPercent(value) במקום PreferredWidth.FromPoints(value).

איך אני מאפס את כל העיצוב בתא או בשורה?

קרא CellFormat.ClearFormatting() על CellFormat של תא, או RowFormat.ClearFormatting() על RowFormat של שורה.

איך אני מגדיר גבולות והצללה לכל הטבלה בבת אחת?

השתמש ב-Table.SetBorders() לגבול אחיד על כל הצדדים, ב-Table.SetBorder() לצד אחד בכל פעם, וב-Table.SetShading() להצללה אחידה; ClearBorders() ו-ClearShading() מאפסים אותם.


API Reference סיכום

מחלקה / Enumתיאור
Tableצומת טבלה; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth
Rowצומת שורת טבלה; Cells, RowFormat, EnsureMinimum()
Cellצומת תא בטבלה; CellFormat, EnsureMinimum()
TableCollection / RowCollection / CellCollectionאוספים טיפוסיים של צמתים Table / Row / Cell
CellFormatעיצוב לכל תא: גבולות, צללה, ריווח, מצב מיזוג, יישור אנכי
RowFormatעיצוב לכל שורה: גבולות, גובה, התנהגות שבירת עמוד
PreferredWidth / PreferredWidthTypeערך רוחב של טבלה או תא והיחידה שלו (אוטומטי, אחוז, נקודות)
AutoFitBehaviorכיצד Table.AutoFit() משנה את גודל הטבלה והתאים שלה
CellMerge / CellVerticalAlignmentמצב מיזוג תאים אופקי/אנכי ויישור תוכן אנכי
TableAlignment / TableStyleOptions / TextWrappingיישור לכל רוחב הטבלה, יישום סגנון, והתנהגות גלישת טקסט
DocumentBuilder.StartTable / InsertCell / EndRow / EndTableבניית טבלה מבוססת סמן

ראה גם

 עברית