Jäsennä OneNote-taulukoita Python:ssa

Microsoft OneNote antaa käyttäjien upottaa rakenteellisia taulukoita suoraan sivuille, mikä on täydellistä tehtävälistoille, aikatauluille, vertailumatriiseille ja tietojen keruulomakkeille. Aspose.Note FOSS for Python tekee mahdolliseksi poimia kaikki nämä taulukkotiedot ohjelmallisesti, ilman Microsoft Office -asennusta.

Asenna

pip install aspose-note

Lataa asiakirja ja etsi taulukoita

GetChildNodes(Table) suorittaa rekursiivisen haun koko asiakirjassa ja palauttaa jokaisen taulukon objektina Table objekti:

from aspose.note import Document, Table

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

Lue soluarvot

Taulukot noudattavat kolmitasoinen hierarkiaa: Table → TableRow → TableCell. Jokainen solu sisältää RichText solmut, joiden .Text antaa tavallisen tekstisisällön:

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}")

Tarkastele sarakeleveyksiä

Table.ColumnWidths palauttaa kunkin sarakkeen tallennetun leveyden pisteinä:

from aspose.note import Document, Table

doc = Document("MyNotes.one")
for i, table in enumerate(doc.GetChildNodes(Table), start=1):
    print(f"Table {i}: {len(table.ColumnWidths)} column(s)")
    print(f"  Widths (pts): {table.ColumnWidths}")
    print(f"  Borders visible: {table.BordersVisible}")

Vie kaikki taulukot CSV-muotoon

Muunna jokainen asiakirjan taulukko CSV-muotoon:

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")

Vie taulukot Python -sanakirjaan / JSON:iin

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": table.ColumnWidths})

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

Käytä ensimmäistä riviä otsikoina

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)

Mitä kirjasto tukee taulukoiden osalta

OminaisuusTuettu
Table.ColumnWidthsKyllä: sarakkeiden leveydet pisteinä
Table.BordersVisibleKyllä
Table.TagsKyllä: OneNote-tunnisteet taulukoissa
Solun teksti kautta RichTextKyllä
Solun kuvat kautta ImageKyllä
Yhdistetyt solut (rowspan/colspan‑metadata)Ei ole julkisessa API:ssa saatavilla
Kirjoita/muokkaa taulukoita ja tallenna kohteeseen .oneEi

Seuraavat askeleet