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

EigenschapTypeBeschrijving
Columnslist[TableColumn]Kolomdefinities; elke TableColumn heeft .Width (float) en .LockedWidth (bool)
IsBordersVisibleboolOf tabelranden worden weergegeven
Tagslist[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 / Image

Je kunt ook tabellen bereiken via GetChildNodes(Table) op elk niveau van een bovenliggend knooppunt, en het doorzoekt de volledige subboom.


Tips

  • table.Columns is een lijst van TableColumn objecten; 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 op Image knooppunten ook als volledige getrouwheid belangrijk is.
  • Gebruik table.GetChildNodes(TableRow) in plaats van itereren for row in table als je een getypeerde lijst nodig hebt in plaats van een generieke iterator.
  • IsBordersVisible reflecteert de weergavevoorkeur van de OneNote-gebruiker op het moment van opslaan; het heeft geen invloed op het extraheren van inhoud.

Zie ook

 Nederlands