Lentelių analizė — Aspose.Note FOSS, skirta Python
OneNote dokumentų lentelės pateikiamos kaip trijų lygių hierarchija: Table → TableRow → TableCell. Kiekvienas langelis gali turėti RichText, Image, ir kitus turinio mazgus. Šiame puslapyje apžvelgiami visi lentelių analizės šablonai, kuriuos palaiko Aspose.Note FOSS, skirtas Python.
Pagrindinis lentelių iteravimas
Gaukite visas dokumento lenteles ir perskaitykite jų langelių tekstą:
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}")Lentelės savybės
| Savybė | Tipas | Aprašymas |
|---|---|---|
Columns | list[TableColumn] | Stulpelių apibrėžimai; kiekvienas TableColumn turi .Width (float) ir .LockedWidth (bool) |
IsBordersVisible | bool | Ar lentelės rėmeliai rodomi |
Tags | list[NoteTag] | OneNote žymės, prisegtos prie lentelės |
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}")Eksportuoti lentelę į CSV
Konvertuoti lentelę į CSV formatą:
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())Išgauti lenteles pagal puslapį
Apribokite lentelių išgavimą atskiriems puslapiams:
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}")Langelio turinys, viršijantis paprastą tekstą
Lentelės langeliai gali turėti Image ir kitus CompositeNode turinį šalia 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)}")Skaičiuoti ir apibendrinti lenteles
Surinkti statistiką apie visas dokumento lenteles:
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]}")Tikrinti žymas lentelėse
Lentelės palaiko NoteTag elementai tiesiogiai:
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 lentelių padėtis
Lentelės rodomos kaip vaikai OutlineElement mazgai viduje Outline konteineriai kiekviename Page. Hierarchija yra:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageTaip pat galite pasiekti lenteles per GetChildNodes(Table) bet kuriame protėvio mazgo lygyje, ir jis ieško viso po-medžio.
Patarimai
table.Columnsyra sąrašasTableColumnobjektų; naudokite[col.Width for col in table.Columns]gauti stulpelių pločius taškais. Ilgis lygiuoja su stulpelių skaičiumi.- Ląstelės turinys ne visada yra grynai
RichText; visada patikrinkiteImagemazgus taip pat, jei svarbus visiškas tikslumas. - Naudokite
table.GetChildNodes(TableRow)vietoj iteravimofor row in tablejei jums reikia tipizuoto sąrašo, o ne bendro iteratoriaus. IsBordersVisibleatspindi OneNote naudotojo rodymo nuostatą išsaugojimo metu; tai neįtakoja turinio išskyrimo.