Tabulu parsēšana — Aspose.Note FOSS priekš Python
OneNote dokumentos tabulas tiek attēlotas kā trīs līmeņu hierarhija: Table → TableRow → TableCell. Katra šūna var saturēt RichText, Image, un citus satura mezglus. Šī lapa aptver visus tabulu parsēšanas modeļus, ko atbalsta Aspose.Note FOSS priekš Python.
Pamata tabulu iterācija
Iegūstiet visas tabulas dokumentā un nolasiet to šūnu tekstu:
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}")Tabulas īpašības
| Īpašība | Tips | Apraksts |
|---|---|---|
Columns | list[TableColumn] | Kolonnas definīcijas; katra TableColumn ir .Width (float) un .LockedWidth (bool) |
IsBordersVisible | bool | Vai tabulas robežas tiek rādītas |
Tags | list[NoteTag] | OneNote birkas, kas pievienotas tabulai |
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ēt tabulu uz CSV
Pārvērst tabulu CSV formātā:
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())Izvilkt tabulas pa lapām
Ierobežot tabulu izvilkšanu uz atsevišķām lapām:
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}")Šūnas saturs pāri vienkāršam tekstam
Tabulas šūnas var saturēt Image un citus CompositeNode saturu blakus 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)}")Skaitīt un kopsavilkt tabulas
Savākt statistiku par visām dokumenta tabulām:
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]}")Pārbaudīt tagus tabulās
Tabulas atbalsta NoteTag vienumi tieši:
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 pozīcija tabulām
Tabulas parādās kā bērni no OutlineElement mezgli iekš Outline konteineri katrā Page. Hierarhija ir:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageJūs varat arī piekļūt tabulām caur GetChildNodes(Table) jebkurā tēva mezgla līmenī, un tas meklē visu apakškoku.
Padomi
table.Columnsir saraksts arTableColumnobjektus; izmantojiet[col.Width for col in table.Columns]lai iegūtu kolonu platumus punktos. Garums ir vienāds ar kolonnu skaitu.- Šūnas saturs ne vienmēr ir tīri
RichText; vienmēr pārbaudietImagemezglus arī, ja svarīga pilna precizitāte. - Izmantojiet
table.GetChildNodes(TableRow)nevis iterējotfor row in tableja jums ir vajadzīgs tipizēts saraksts, nevis vispārējs iterator. IsBordersVisibleatspoguļo OneNote lietotāja attēlošanas preferences saglabāšanas brīdī; tas neietekmē satura izguvi.