Analyse de tableaux — Aspose.Note FOSS pour Python
Les tableaux dans les documents OneNote sont exposés sous forme d’une hiérarchie à trois niveaux : Table → TableRow → TableCell. Chaque cellule peut contenir RichText, Image, et d’autres nœuds de contenu. Cette page couvre tous les modèles d’analyse de tableau pris en charge par Aspose.Note FOSS pour Python.
Itération de base des tableaux
Récupérez tous les tableaux du document et lisez le texte de leurs cellules :
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}")Propriétés du tableau
| Propriété | Type | Description |
|---|---|---|
Columns | list[TableColumn] | Définitions de colonnes ; chaque TableColumn a .Width (float) et .LockedWidth (bool) |
IsBordersVisible | bool | Indique si les bordures du tableau sont affichées |
Tags | list[NoteTag] | Étiquettes OneNote attachées au tableau |
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}")Exporter le tableau au format CSV
Convertir un tableau au 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())Extraire les tableaux par page
Limitez l’extraction des tableaux aux pages individuelles :
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}")Contenu des cellules au-delà du texte brut
Les cellules du tableau peuvent contenir Image et d’autres CompositeNode contenu à côté de 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)}")Compter et résumer les tableaux
Collectez des statistiques sur tous les tableaux d’un document :
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]}")Inspecter les balises sur les tableaux
Les tableaux prennent en charge NoteTag des éléments directement:
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}")Position DOM des tables
Les tableaux apparaissent comme enfants de OutlineElement nœuds à l’intérieur de Outline conteneurs sur chaque Page. La hiérarchie est:
Page
└── Outline
└── OutlineElement
└── Table
└── TableRow
└── TableCell
└── RichText / ImageVous pouvez également accéder aux tableaux via GetChildNodes(Table) à n’importe quel niveau de nœud ancêtre, et il parcourt tout le sous‑arbre.
Conseils
table.Columnsest une liste deTableColumnobjets ; utilisez[col.Width for col in table.Columns]pour obtenir les largeurs de colonnes en points. La longueur correspond au nombre de colonnes.- Le contenu de la cellule n’est pas toujours purement
RichText; vérifiez toujours la présence deImagenœuds également si la fidélité totale est importante. - Utilisez
table.GetChildNodes(TableRow)plutôt que d’itérerfor row in tablesi vous avez besoin d’une liste typée plutôt que d’un itérateur générique. IsBordersVisiblereflète la préférence d’affichage de l’utilisateur OneNote au moment de l’enregistrement ; cela n’affecte pas l’extraction du contenu.