Διαλογισμός πίνακα Aspose.Note FOSS για Python

Οι πίνακες στα έγγραφα του OneNote εκθέτονται ως ιεραρχία τριών επιπέδων: Table → TableRow → TableCell.Κάθε κύτταρο μπορεί να περιέχει RichText, Image, και άλλα κόμβα περιεχομένου. Αυτή η σελίδα καλύπτει κάθε πρότυπο παρτίνωσης του πίνακα που υποστηρίζεται από Aspose.Note FOSS για Python.


Βασική πίνακα ιθερίτιδα

Επαναλάβετε όλες τις πίνακες στο έγγραφο και διαβάστε το κείμενο των κυττάρων τους:

from aspose.note import Document, Table, TableRow, TableCell, RichText

doc = Document("MyNotes.one")

for table_num, table in enumerate(doc.GetChildNodes(Table), start=1):
    print(f"\nTable {table_num}: {len(table.Columns)} column(s)")
    for r, row in enumerate(table.GetChildNodes(TableRow), start=1):
        cells = row.GetChildNodes(TableCell)
        values = [
            " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
            for cell in cells
        ]
        print(f"  Row {r}: {values}")

Ιδιότητες Τάπουλ

ΙδιοκτησίαΤύποςΠεριγραφή
Columnslist[TableColumn]Ορισμός στήλης: κάθε TableColumn Έχει .Width (από την πλοία) και .LockedWidth ( Το Μπόλ)
IsBordersVisibleboolΕάν εμφανίζονται τα όρια του τραπέζου
Tagslist[NoteTag]OneNote tags προστίθενται στο τραπέζι
from aspose.note import Document, Table

doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
    print(f"Columns: {len(table.Columns)}")
    print(f"Widths (pts): {[col.Width for col in table.Columns]}")
    print(f"Borders visible: {table.IsBordersVisible}")

Εξαγωγικό πίνακα σε CSV

Μετατρέψτε ένα πίνακα σε μορφή CSV:

import csv
import io
from aspose.note import Document, Table, TableRow, TableCell, RichText

doc = Document("MyNotes.one")
output = io.StringIO()
writer = csv.writer(output)

for table in doc.GetChildNodes(Table):
    for row in table.GetChildNodes(TableRow):
        values = [
            " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
            for cell in row.GetChildNodes(TableCell)
        ]
        writer.writerow(values)
    writer.writerow([])  # blank line between tables

print(output.getvalue())

Εξαγωγή πίνακων ανά σελίδα

Εξέταση πίνακα κλίμακας σε μεμονωμένες σελίδες:

from aspose.note import Document, Page, Table, TableRow, TableCell, RichText

doc = Document("MyNotes.one")
for page_num, page in enumerate(doc.GetChildNodes(Page), start=1):
    tables = page.GetChildNodes(Table)
    if not tables:
        continue
    title = (
        page.Title.TitleText.Text
        if page.Title and page.Title.TitleText
        else f"Page {page_num}"
    )
    print(f"\n=== {title} ({len(tables)} table(s)) ===")
    for t, table in enumerate(tables, start=1):
        print(f"  Table {t}:")
        for row in table.GetChildNodes(TableRow):
            cells = row.GetChildNodes(TableCell)
            row_text = [
                " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
                for cell in cells
            ]
            print(f"    {row_text}")

Πληροφορίες για το περιεχόμενο πέρα από το κείμενο

Τα κελιά του τραπέζου μπορούν να περιέχουν Image και άλλοι CompositeNode Συμπεριφορά δίπλα RichText:

from aspose.note import Document, Table, TableRow, TableCell, RichText, Image

doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
    for row in table.GetChildNodes(TableRow):
        for cell in row.GetChildNodes(TableCell):
            texts = [rt.Text for rt in cell.GetChildNodes(RichText) if rt.Text]
            images = cell.GetChildNodes(Image)
            print(f"  Cell texts: {texts}  images: {len(images)}")

Συνοψίστε και συλλέξτε τα τραπέζια

Συλλέξτε στατιστικά στοιχεία για όλα τα τραπέζια σε ένα έγγραφο:

from aspose.note import Document, Table, TableRow, TableCell

doc = Document("MyNotes.one")
tables = doc.GetChildNodes(Table)
print(f"Total tables: {len(tables)}")

for i, table in enumerate(tables, start=1):
    rows = table.GetChildNodes(TableRow)
    if rows:
        cols = len(rows[0].GetChildNodes(TableCell))
    else:
        cols = 0
    print(f"  Table {i}: {len(rows)} row(s) x {cols} column(s)  widths={[col.Width for col in table.Columns]}")

Ελέγξτε τα ετικέτα σε πίνακες

Στήριξη Τάβουλας NoteTag Τα στοιχεία απευθείας:

from aspose.note import Document, Table, TagStatus

doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
    for tag in table.Tags:
        is_completed = tag.Status == TagStatus.Completed
        print(f"Table tag: {tag.Label}  icon={tag.Icon}  completed={is_completed}")

Ο χώρος των τραπεζών

Τα παιδιά εμφανίζονται σαν τα παιδιά των OutlineElement Κόντρα μέσα Outline Κάθε δοχείο σε κάθε Page.Η ιεραρχία είναι:

Page
  └── Outline
        └── OutlineElement
              └── Table
                    └── TableRow
                          └── TableCell
                                └── RichText / Image

Μπορείτε επίσης να φτάσετε σε πίνακες μέσω GetChildNodes(Table) σε οποιοδήποτε επίπεδο νύχτας των προγόνων, και αναζητά το πλήρες υποδέντρο.


Tips

  • table.Columns Είναι μια λίστα με TableColumn αντικείμενα · χρήση [col.Width for col in table.Columns] Για να πάρει πλάτους στήλης σε σημεία. το μήκος ισούται με τον αριθμό των στίχων.
  • Το περιεχόμενο των κυττάρων δεν είναι πάντα καθαρό RichText;Πάντα να ελέγχετε για Image Ακόμα και αν έχει σημασία η πλήρης πίστη.
  • Χρησιμοποιήστε table.GetChildNodes(TableRow) Αντί να ιταρίσει for row in table Αν χρειάζεστε μια τυποποιημένη λίστα αντί για έναν γενικό ιθερατή.
  • IsBordersVisible αντικατοπτρίζει την προτίμηση προβολής του χρήστη στο OneNote για να εξοικονομήσει χρόνο· δεν επηρεάζει την εκχύλιση περιεχομένου.

Δείτε επίσης

 Ελληνικά