Tabellenparsing — Aspose.Note FOSS für Python
Tabellen in OneNote-Dokumenten werden als dreistufige Hierarchie dargestellt: Table → TableRow → TableCell. Jede Zelle kann enthalten RichText, Image, und andere Inhaltsknoten. Diese Seite deckt jedes Tabellenauslesemuster ab, das von Aspose.Note FOSS für Python unterstützt wird.
Grundlegende Tabelleniteration
Alle Tabellen im Dokument abrufen und deren Zellentext lesen:
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}")Tabelleneigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
Columns | list[TableColumn] | Spaltendefinitionen; jede TableColumn hat .Width (float) und .LockedWidth (bool) |
IsBordersVisible | bool | Ob Tabellenränder angezeigt werden |
Tags | list[NoteTag] | OneNote-Tags, die an die Tabelle angehängt sind |
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}")Tabelle nach CSV exportieren
Eine Tabelle in das CSV‑Format konvertieren:
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())Tabellen pro Seite extrahieren
Tabellenextraktion auf einzelne Seiten beschränken:
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}")Zellinhalt über reinen Text hinaus
Tabellenzellen können enthalten Image und andere CompositeNode Inhalt neben 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)}")Tabellen zählen und zusammenfassen
Statistiken über alle Tabellen in einem Dokument sammeln:
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]}")Tags in Tabellen prüfen
Tabellen unterstützen NoteTag Elemente direkt:
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-Position von Tabellen
Tabellen erscheinen als Kinder von OutlineElement Knoten innerhalb Outline Container auf jedem Page. Die Hierarchie ist:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageSie können Tabellen auch über GetChildNodes(Table) auf jeder Ebene eines übergeordneten Knotens und durchsucht den gesamten Unterbaum.
Tipps
table.Columnsist eine Liste vonTableColumnObjekten; verwenden Sie[col.Width for col in table.Columns]um Spaltenbreiten in Punkten zu erhalten. Die Länge entspricht der Anzahl der Spalten.- Zellinhalt ist nicht immer rein
RichText; prüfen Sie immer aufImageKnoten ebenfalls, wenn volle Treue wichtig ist. - Verwenden Sie
table.GetChildNodes(TableRow)statt zu iterierenfor row in tablewenn Sie eine typisierte Liste statt eines generischen Iterators benötigen. IsBordersVisiblespiegelt die Anzeigeeinstellung des OneNote‑Benutzers zum Zeitpunkt des Speicherns wider; sie beeinflusst die Inhaltsextraktion nicht.