Tabelparsen — Aspose.Note FOSS voor Python
Tabellen in OneNote-documenten worden weergegeven als een hiërarchie met drie niveaus: Table → TableRow → TableCell. Elke cel kan bevatten RichText, Image, en andere inhoudsknooppunten. Deze pagina behandelt elk tabel‑ontleedpatroon dat wordt ondersteund door Aspose.Note FOSS voor Python.
Basis Tabeliteratie
Haal alle tabellen in het document op en lees hun celtekst:
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}")Tabeleigenschappen
| Eigenschap | Type | Beschrijving |
|---|---|---|
Columns | list[TableColumn] | Kolomdefinities; elke TableColumn heeft .Width (float) en .LockedWidth (bool) |
IsBordersVisible | bool | Of tabelranden worden weergegeven |
Tags | list[NoteTag] | OneNote-tags die aan de tabel zijn gekoppeld |
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}")Exporteer Tabel naar CSV
Converteer een tabel naar CSV‑formaat:
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())Extraheer Tabellen Per Pagina
Beperk tabel‑extractie tot individuele pagina’s:
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}")Celinhoud Naast Platte Tekst
Tabelcellen kunnen bevatten Image en andere CompositeNode inhoud naast 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)}")Tel en Vat Tabellen Samen
Verzamel statistieken over alle tabellen in een document:
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]}")Inspecteer Tags op Tabellen
Tabellen ondersteunen NoteTag items direct:
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-positie van tabellen
Tabellen verschijnen als kinderen van OutlineElement nodes binnen Outline containers op elke Page. De hiërarchie is:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageJe kunt ook tabellen bereiken via GetChildNodes(Table) op elk niveau van een bovenliggend knooppunt, en het doorzoekt de volledige subboom.
Tips
table.Columnsis een lijst vanTableColumnobjecten; gebruik[col.Width for col in table.Columns]om kolombreedtes in punten te krijgen. De lengte is gelijk aan het aantal kolommen.- Celinhoud is niet altijd puur
RichText; controleer altijd opImageknooppunten ook als volledige getrouwheid belangrijk is. - Gebruik
table.GetChildNodes(TableRow)in plaats van itererenfor row in tableals je een getypeerde lijst nodig hebt in plaats van een generieke iterator. IsBordersVisiblereflecteert de weergavevoorkeur van de OneNote-gebruiker op het moment van opslaan; het heeft geen invloed op het extraheren van inhoud.