Table Parsing — Aspose.Note FOSS for 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}")Ιδιότητες Πίνακα
| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
Columns | list[TableColumn] | Ορισμοί στήλης· κάθε TableColumn έχει .Width (float) και .LockedWidth (bool) |
IsBordersVisible | bool | Εάν εμφανίζονται τα σύνορα του πίνακα |
Tags | list[NoteTag] | Ετικέτες OneNote που συνδέονται με τον πίνακα |
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}")Θέση DOM των Πινάκων
Οι πίνακες εμφανίζονται ως παιδιά του OutlineElement κόμβοι εντός Outline υποδοχείς σε κάθε Page. Η ιεραρχία είναι:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageΜπορείτε επίσης να φτάσετε στους πίνακες μέσω GetChildNodes(Table) σε οποιοδήποτε επίπεδο προγόνου κόμβου, και ψάχνει ολόκληρο το υποδέντρο.
Συμβουλές
table.Columnsείναι μια λίστα τωνTableColumnαντικειμένων· χρησιμοποιήστε[col.Width for col in table.Columns]για να λάβετε το πλάτος των στηλών σε σημεία. Το μήκος ισούται με τον αριθμό των στηλών.- Το περιεχόμενο του κελιού δεν είναι πάντα καθαρά
RichText; ελέγξτε πάντα γιαImageκόμβους επίσης εάν η πλήρης πιστότητα είναι σημαντική. - Χρησιμοποιήστε
table.GetChildNodes(TableRow)αντί για επανάληψηfor row in tableαν χρειάζεστε μια τυποποιημένη λίστα αντί για έναν γενικό επαναλήπτη. IsBordersVisibleαντανακλά την προτίμηση εμφάνισης του χρήστη OneNote κατά την αποθήκευση· δεν επηρεάζει την εξαγωγή περιεχομένου.