פירוש טבלאות — 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}")מאפייני הטבלה
| מאפיין | סוג | תיאור |
|---|---|---|
Columns | list[TableColumn] | הגדרות עמודה; כל TableColumn מכילה .Width (float) ו .LockedWidth (bool) |
IsBordersVisible | bool | האם גבולות הטבלה מוצגים |
Tags | list[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 בזמן השמירה; זה לא משפיע על חילוץ התוכן.