פירוש טבלאות — Aspose.Note FOSS עבור Python

טבלאות במסמכי OneNote נחשפות כהיררכיה בת של שלושה רמות: Table → TableRow → TableCell. כל תא יכול להכיל RichText, Image, וצמתים של תוכן אחרים. דף זה מכסה את כל דפוסי הפירוק של טבלאות הנתמכים על ידי Aspose.Note FOSS עבור Python.


איטרציה בסיסית של טבלאות

קבל את כל הטבלאות במסמך וקרא את טקסט התאים שלהן:

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

מאפייני הטבלה

מאפייןסוגתיאור
Columnslist[TableColumn]הגדרות עמודה; כל TableColumn מכילה .Width (float) ו .LockedWidth (bool)
IsBordersVisibleboolהאם גבולות הטבלה מוצגים
Tagslist[NoteTag]תגיות OneNote המצורפות לטבלה
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}")

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

המרת טבלה לפורמט CSV:

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

חילוץ טבלאות לפי עמוד

הגבל את חילוץ הטבלאות לעמודים בודדים:

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

תוכן התא מעבר לטקסט רגיל

תאי טבלה יכולים להכיל Image ו‑אחרים CompositeNode תוכן לצד 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)}")

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

איסוף סטטיסטיקות על כל הטבלאות במסמך:

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

בדיקת תגיות בטבלאות

טבלאות תומכות NoteTag פריטים ישירות:

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 של טבלאות

טבלאות מופיעות כילדים של OutlineElement צמתים בתוך Outline מכולות על כל Page. ההיררכיה היא:

Page
  └── Outline
        └── OutlineElement
              └── Table
                    └── TableRow
                          └── TableCell
                                └── RichText / Image

ניתן גם להגיע לטבלאות דרך GetChildNodes(Table) בכל רמת צומת קודמת, והוא מחפש את תת-העץ המלא.


טיפים

  • table.Columns זו רשימה של TableColumn אובייקטים; השתמש [col.Width for col in table.Columns] כדי לקבל רוחבי עמודות בנקודות. האורך שווה למספר העמודות.
  • תוכן התא אינו תמיד טהור RichText; תמיד בדוק עבור Image צמתים גם אם חשובה שלמות מלאה.
  • השתמש table.GetChildNodes(TableRow) במקום לאיטרציה for row in table אם אתה צריך רשימה עם טיפוס במקום איטרטור גנרי.
  • IsBordersVisible משקף את העדפת התצוגה של משתמש OneNote בזמן השמירה; זה לא משפיע על חילוץ התוכן.

ראה גם

 עברית