Jäsennä OneNote-taulukoita Python:ssa
Microsoft OneNote antaa käyttäjien upottaa rakenteellisia taulukoita suoraan sivuille, mikä on täydellistä tehtävälistoille, aikatauluille, vertailumatriiseille ja tietojen keruulomakkeille. Aspose.Note FOSS for Python tekee mahdolliseksi poimia kaikki nämä taulukkotiedot ohjelmallisesti, ilman Microsoft Office -asennusta.
Asenna
pip install aspose-note
Lataa asiakirja ja etsi taulukoita
GetChildNodes(Table) suorittaa rekursiivisen haun koko asiakirjassa ja palauttaa jokaisen taulukon objektina Table objekti:
from aspose.note import Document, Table
doc = Document("MyNotes.one")
tables = doc.GetChildNodes(Table)
print(f"Found {len(tables)} table(s)")
Lue soluarvot
Taulukot noudattavat kolmitasoinen hierarkiaa: Table → TableRow → TableCell. Jokainen solu sisältää RichText solmut, joiden .Text antaa tavallisen tekstisisällön:
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.one")
for t_num, table in enumerate(doc.GetChildNodes(Table), start=1):
print(f"\nTable {t_num}:")
for r_num, row in enumerate(table.GetChildNodes(TableRow), start=1):
cells = row.GetChildNodes(TableCell)
row_values = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f" Row {r_num}: {row_values}")
Tarkastele sarakeleveyksiä
Table.ColumnWidths palauttaa kunkin sarakkeen tallennetun leveyden pisteinä:
from aspose.note import Document, Table
doc = Document("MyNotes.one")
for i, table in enumerate(doc.GetChildNodes(Table), start=1):
print(f"Table {i}: {len(table.ColumnWidths)} column(s)")
print(f" Widths (pts): {table.ColumnWidths}")
print(f" Borders visible: {table.BordersVisible}")
Vie kaikki taulukot CSV-muotoon
Muunna jokainen asiakirjan taulukko CSV-muotoon:
import csv, 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 row between tables
with open("tables.csv", "w", encoding="utf-8", newline="") as f:
f.write(output.getvalue())
print("Saved tables.csv")
Vie taulukot Python -sanakirjaan / JSON:iin
import json
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.one")
result = []
for table in doc.GetChildNodes(Table):
rows = []
for row in table.GetChildNodes(TableRow):
cells = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in row.GetChildNodes(TableCell)
]
rows.append(cells)
result.append({"rows": rows, "column_widths": table.ColumnWidths})
print(json.dumps(result, indent=2))
Käytä ensimmäistä riviä otsikoina
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
rows = table.GetChildNodes(TableRow)
if not rows:
continue
def row_text(row):
return [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in row.GetChildNodes(TableCell)
]
headers = row_text(rows[0])
print("Headers:", headers)
for row in rows[1:]:
record = dict(zip(headers, row_text(row)))
print(" Record:", record)
Mitä kirjasto tukee taulukoiden osalta
| Ominaisuus | Tuettu |
|---|---|
Table.ColumnWidths | Kyllä: sarakkeiden leveydet pisteinä |
Table.BordersVisible | Kyllä |
Table.Tags | Kyllä: OneNote-tunnisteet taulukoissa |
Solun teksti kautta RichText | Kyllä |
Solun kuvat kautta Image | Kyllä |
| Yhdistetyt solut (rowspan/colspan‑metadata) | Ei ole julkisessa API:ssa saatavilla |
Kirjoita/muokkaa taulukoita ja tallenna kohteeseen .one | Ei |