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šībaTipsApraksts
Columnslist[TableColumn]Kolonnas definīcijas; katra TableColumn ir .Width (float) un .LockedWidth (bool)
IsBordersVisibleboolVai tabulas robežas tiek rādītas
Tagslist[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 / Image

Jūs varat arī piekļūt tabulām caur GetChildNodes(Table) jebkurā tēva mezgla līmenī, un tas meklē visu apakškoku.


Padomi

  • table.Columns ir saraksts ar TableColumn objektus; 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ārbaudiet Image mezglus arī, ja svarīga pilna precizitāte.
  • Izmantojiet table.GetChildNodes(TableRow) nevis iterējot for row in table ja jums ir vajadzīgs tipizēts saraksts, nevis vispārējs iterator.
  • IsBordersVisible atspoguļo OneNote lietotāja attēlošanas preferences saglabāšanas brīdī; tas neietekmē satura izguvi.

Skatiet arī

 Latviešu