Parsing Tabel — Aspose.Note FOSS untuk Python
Tabel dalam dokumen OneNote ditampilkan sebagai hierarki tiga tingkat: Table → TableRow → TableCell. Setiap sel dapat berisi RichText, Image, dan node konten lainnya. Halaman ini mencakup setiap pola parsing tabel yang didukung oleh Aspose.Note FOSS untuk Python.
Iterasi Tabel Dasar
Ambil semua tabel dalam dokumen dan baca teks selnya:
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}")Properti Tabel
| Properti | Tipe | Deskripsi |
|---|---|---|
Columns | list[TableColumn] | Definisi kolom; setiap TableColumn memiliki .Width (float) dan .LockedWidth (bool) |
IsBordersVisible | bool | Apakah batas tabel ditampilkan |
Tags | list[NoteTag] | Tag OneNote yang terlampir pada tabel |
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}")Ekspor Tabel ke CSV
Konversi tabel 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 Tabel per Halaman
Batasi ekstraksi tabel ke halaman tertentu:
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}")Konten Sel Lebih dari Teks Biasa
Sel tabel dapat berisi Image dan lainnya CompositeNode konten bersamaan 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)}")Hitung dan Ringkas Tabel
Kumpulkan statistik tentang semua tabel 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 Tabel
Dukungan tabel 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}")Posisi DOM Tabel
Tabel muncul sebagai anak dari OutlineElement node di dalam Outline kontainer pada setiap Page. Hirarki adalah:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageAnda juga dapat mengakses tabel melalui GetChildNodes(Table) pada tingkat node nenek moyang mana pun, dan ia mencari seluruh subtree.
Tips
table.Columnsadalah daftarTableColumnobjek; gunakan[col.Width for col in table.Columns]untuk mendapatkan lebar kolom dalam poin. Panjangnya sama dengan jumlah kolom.- Konten sel tidak selalu murni
RichText; selalu periksaImagenode juga jika keakuratan penuh penting. - Gunakan
table.GetChildNodes(TableRow)daripada mengiterasifor row in tablejika Anda membutuhkan daftar bertipe daripada iterator generik. IsBordersVisiblemencerminkan preferensi tampilan pengguna OneNote pada saat penyimpanan; tidak memengaruhi ekstraksi konten.