פענוח טבלאות OneNote ב-Python

Microsoft OneNote מאפשר למשתמשים לשלב טבלאות מובנות ישירות בדפים, מושלם עבור רשימות משימות, לוחות זמנים, מטריצות השוואה וטפסי איסוף נתונים. Aspose.Note FOSS עבור Python מאפשר לחלץ את כל הנתונים הטבלאיים האלה באופן תכנותי, ללא צורך בהתקנת Microsoft Office.

התקנה

pip install aspose-note

טען את המסמך ומצא טבלאות

GetChildNodes(Table) מבצע חיפוש רקורסיבי על פני כל המסמך ומחזיר כל טבלה כ Table אובייקט:

from aspose.note import Document, Table

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

קרא ערכי תאים

הטבלאות פועלות על פי היררכיה בת שלושה רמות: Table → TableRow → TableCell. כל תא מכיל RichText צמתים ש .Text מספק את תוכן הטקסט הפשוט:

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

בדוק רוחבי עמודות

Table.ColumnWidths מחזיר את הרוחב השמור של כל עמודה בנקודות:

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

ייצא את כל הטבלאות ל‑CSV

המר כל טבלה במסמך לפורמט CSV:

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

ייצא טבלאות ל‑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": table.ColumnWidths})

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

השתמש בשורה הראשונה ככותרות

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)

מה הספרייה תומכת בו עבור טבלאות

תכונהנתמך
Table.ColumnWidthsכן: רוחבי עמודות בנקודות
Table.BordersVisibleכן
Table.Tagsכן: תגיות OneNote בטבלאות
טקסט תא דרך RichTextכן
תמונות תא דרך Imageכן
תאים ממוזגים (מטא‑נתוני rowspan/colspan)לא נחשף ב‑API הציבורי
כתוב/ערוך טבלאות ושמור ל .oneלא

הצעדים הבאים