Analizuokite OneNote lenteles Python
Microsoft OneNote leidžia vartotojams įterpti struktūruotas lenteles tiesiai į puslapius, puikiai tinkančias užduočių sąrašams, tvarkaraščiams, palyginimo matricoms ir duomenų rinkimo formoms. Aspose.Note FOSS skirtą Python suteikia galimybę programiškai išgauti visus šiuos lentelinius duomenis, nereikalaujant Microsoft Office įdiegimo.
Įdiegti
pip install aspose-note
Įkelkite dokumentą ir raskite lenteles
GetChildNodes(Table) atlieka rekursinę paiešką visame dokumente ir grąžina kiekvieną lentelę kaip a Table objektas:
from aspose.note import Document, Table
doc = Document("MyNotes.one")
tables = doc.GetChildNodes(Table)
print(f"Found {len(tables)} table(s)")
Skaityti langelių reikšmes
Lentelės seka trijų lygių hierarchiją: Table → TableRow → TableCell. Kiekvienas langelis turi RichText mazgus, kurių .Text pateikia grynojo teksto turinį:
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}")
Tikrinti stulpelių pločius
Table.ColumnWidths grąžina saugomą kiekvieno stulpelio plotį taškais:
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}")
Eksportuoti visas lenteles į CSV
Konvertuoti kiekvieną dokumento lentelę į CSV formatą:
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")
Eksportuoti lenteles į Python žodyną / JSON
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))
Naudoti pirmą eilutę kaip antraštes
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)
Ką biblioteka palaiko lentelėms
| Funkcija | Palaikoma |
|---|---|
Table.ColumnWidths | Taip: stulpelių plotiai taškais |
Table.BordersVisible | Taip |
Table.Tags | Taip: OneNote žymės lentelėse |
Langelio tekstas per RichText | Taip |
Langelio paveikslėliai per Image | Taip |
| Sujungti langeliai (rowspan/colspan metaduomenys) | Nėra atskleista viešoje API |
Rašyti/redaguoti lenteles ir išsaugoti į .one | Ne |