Εργασία με Πίνακες

Εργασία με Πίνακες

Πίνακες σε 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() — μια ανοιχτή γραμμή ή πίνακας αφήνει την εσωτερική κατάσταση του builder (και το προκύπτον δέντρο εγγράφων) κατεστραμμένη.
  • Ορίστε DocumentBuilder.CellFormat και DocumentBuilder.RowFormat πριν από κάθε κλήση InsertCell() ή EndRow() εάν διαφορετικές γραμμές ή κελιά στον ίδιο πίνακα χρειάζονται διαφορετική μορφοποίηση· ο builder εφαρμόζει ό,τι είναι αυτή τη στιγμή ορισμένο τη στιγμή της εισαγωγής.
  • Καλείτε 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Τιμή πλάτους πίνακα ή κελιού και η μονάδα του (auto, percent, points)
AutoFitBehaviorΠώς το Table.AutoFit() αλλάζει το μέγεθος ενός πίνακα και των κελιών του
CellMerge / CellVerticalAlignmentΚατάσταση οριζόντιας/κατακόρυφης συγχώνευσης κελιών και κατακόρυφη στοίχιση περιεχομένου
TableAlignment / TableStyleOptions / TextWrappingΣτοίχιση σε όλο τον πίνακα, εφαρμογή στυλ και συμπεριφορά αναδίπλωσης κειμένου
DocumentBuilder.StartTable / InsertCell / EndRow / EndTableΔημιουργία πίνακα με βάση τον κέρσορα

Δείτε επίσης

 Ελληνικά