Analizuokite OneNote lenteles Python

Microsoft OneNote leidžia vartotojams įterpti struktūruotas lenteles tiesiai į puslapius, puikiai tinkančias užduočių sąrašams, tvarkaraščiams, palyginimo matricoms ir duomenų rinkimo formoms. Aspose.Note FOSS skirtą Python suteikia galimybę programiškai išgauti visus šiuos lentelinius duomenis, nereikalaujant Microsoft Office įdiegimo.

Įdiegti

pip install aspose-note

Įkelkite dokumentą ir raskite lenteles

GetChildNodes(Table) atlieka rekursinę paiešką visame dokumente ir grąžina kiekvieną lentelę kaip a Table objektas:

from aspose.note import Document, Table

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

Skaityti langelių reikšmes

Lentelės seka trijų lygių hierarchiją: Table → TableRow → TableCell. Kiekvienas langelis turi RichText mazgus, kurių .Text pateikia grynojo teksto turinį:

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

Tikrinti stulpelių pločius

Table.ColumnWidths grąžina saugomą kiekvieno stulpelio plotį taškais:

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

Eksportuoti visas lenteles į CSV

Konvertuoti kiekvieną dokumento lentelę į CSV formatą:

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

Eksportuoti lenteles į Python žodyną / 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": table.ColumnWidths})

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

Naudoti pirmą eilutę kaip antraštes

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)

Ką biblioteka palaiko lentelėms

FunkcijaPalaikoma
Table.ColumnWidthsTaip: stulpelių plotiai taškais
Table.BordersVisibleTaip
Table.TagsTaip: OneNote žymės lentelėse
Langelio tekstas per RichTextTaip
Langelio paveikslėliai per ImageTaip
Sujungti langeliai (rowspan/colspan metaduomenys)Nėra atskleista viešoje API
Rašyti/redaguoti lenteles ir išsaugoti į .oneNe

Tolimesni žingsniai