Penguraian Jadual — Aspose.Note FOSS untuk Python
Jadual dalam dokumen OneNote dipaparkan sebagai hierarki tiga peringkat: Table → TableRow → TableCell. Setiap sel boleh mengandungi RichText, Image, dan nod kandungan lain. Halaman ini merangkumi setiap corak penguraian jadual yang disokong oleh Aspose.Note FOSS untuk Python.
Iterasi Jadual Asas
Dapatkan semua jadual dalam dokumen dan baca teks sel mereka:
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}")Sifat Jadual
| Sifat | Jenis | Keterangan |
|---|---|---|
Columns | list[TableColumn] | Definisi lajur; setiap TableColumn mempunyai .Width (float) dan .LockedWidth (bool) |
IsBordersVisible | bool | Sama ada sempadan jadual dipaparkan |
Tags | list[NoteTag] | Tag OneNote yang dilampirkan pada jadual |
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}")Eksport Jadual ke CSV
Tukar jadual ke format 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())Ekstrak Jadual Per Halaman
Hadkan ekstraksi jadual kepada halaman individu:
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}")Kandungan Sel Lebih Dari Teks Biasa
Sel jadual boleh mengandungi Image dan lain-lain CompositeNode kandungan bersama-sama 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)}")Kira dan Ringkaskan Jadual
Kumpulkan statistik mengenai semua jadual dalam dokumen:
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]}")Periksa Tag pada Jadual
Sokongan jadual NoteTag item secara langsung:
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}")Kedudukan DOM Jadual
Jadual muncul sebagai anak kepada OutlineElement node dalam Outline container pada setiap Page. Hierarki ialah:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageAnda juga boleh mencapai jadual melalui GetChildNodes(Table) pada mana-mana tahap nod nenek moyang, dan ia mencari seluruh subpokok.
Petua
table.Columnsadalah senaraiTableColumnobjek; gunakan[col.Width for col in table.Columns]untuk mendapatkan lebar lajur dalam titik. Panjangnya sama dengan bilangan lajur.- Kandungan sel tidak selalu sepenuhnya
RichText; sentiasa periksaImagenod juga jika kesetiaan penuh penting. - Gunakan
table.GetChildNodes(TableRow)daripada mengulangifor row in tablejika anda memerlukan senarai berjenis berbanding iterator generik. IsBordersVisiblemencerminkan keutamaan paparan pengguna OneNote pada masa simpan; ia tidak mempengaruhi pengekstrakan kandungan.