OneNote-tabellen parseren in Python

Microsoft OneNote laat gebruikers gestructureerde tabellen direct in pagina’s insluiten, perfect voor takenlijsten, roosters, vergelijkingsmatrixen en gegevensverzamelingsformulieren. Aspose.Note FOSS voor Python maakt het mogelijk al deze tabelgegevens programmatisch te extraheren, zonder dat een Microsoft Office-installatie vereist is.

Installeren

pip install aspose-note

Laad het document en vind tabellen

GetChildNodes(Table) voert een recursieve zoekopdracht uit over het hele document en retourneert elke tabel als een Table object:

from aspose.note import Document, Table

doc = Document("MyNotes.one")
tables = doc.GetChildNodes(Table)
print(f"Found {len(tables)} table(s)")

Celwaarden lezen

Tabellen volgen een hiërarchie van drie niveaus: Table → TableRow → TableCell. Elke cel bevat RichText knooppunten waarvan .Text geeft de platte-tekstinhoud:

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

doc = Document("MyNotes.one")

for t_num, table in enumerate(doc.GetChildNodes(Table), start=1):
    print(f"\nTable {t_num}:")
    for r_num, row in enumerate(table.GetChildNodes(TableRow), start=1):
        cells = row.GetChildNodes(TableCell)
        row_values = [
            " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
            for cell in cells
        ]
        print(f"  Row {r_num}: {row_values}")

Kolombreedtes inspecteren

Table.ColumnWidths geeft de opgeslagen breedte van elke kolom in punten terug:

from aspose.note import Document, Table

doc = Document("MyNotes.one")
for i, table in enumerate(doc.GetChildNodes(Table), start=1):
    widths = [col.Width for col in table.Columns]
    print(f"Table {i}: {len(widths)} column(s)")
    print(f"  Widths (pts): {widths}")
    print(f"  Borders visible: {table.IsBordersVisible}")

Alle tabellen exporteren naar CSV

Converteer elke tabel in het document naar CSV-formaat:

import csv, 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 row between tables

with open("tables.csv", "w", encoding="utf-8", newline="") as f:
    f.write(output.getvalue())

print("Saved tables.csv")

Tabellen exporteren naar een Python dict / JSON

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

doc = Document("MyNotes.one")
result = []

for table in doc.GetChildNodes(Table):
    rows = []
    for row in table.GetChildNodes(TableRow):
        cells = [
            " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
            for cell in row.GetChildNodes(TableCell)
        ]
        rows.append(cells)
    result.append({"rows": rows, "column_widths": [col.Width for col in table.Columns]})

print(json.dumps(result, indent=2))

Gebruik de eerste rij als kopteksten

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

doc = Document("MyNotes.one")

for table in doc.GetChildNodes(Table):
    rows = table.GetChildNodes(TableRow)
    if not rows:
        continue

    def row_text(row):
        return [
            " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
            for cell in row.GetChildNodes(TableCell)
        ]

    headers = row_text(rows[0])
    print("Headers:", headers)
    for row in rows[1:]:
        record = dict(zip(headers, row_text(row)))
        print("  Record:", record)

Wat de bibliotheek ondersteunt voor tabellen

FunctieOndersteund
Table.ColumnWidthsJa: kolombreedtes in punten
Table.BordersVisibleJa
Table.TagsJa: OneNote-tags op tabellen
Celtekst via RichTextJa
Celafbeeldingen via ImageJa
Samengevoegde cellen (rowspan/colspan metadata)Niet beschikbaar in de openbare API
Schrijf/bewerk tabellen en sla op naar .oneNee

Volgende stappen