from odf import opendocument
from odf.table import Table, TableRow
from odf.text import P

def sheet_text(path):
    doc = opendocument.load(path)
    table = list(doc.spreadsheet.getElementsByType(Table))[0]
    rows = list(table.getElementsByType(TableRow))
    out = []
    for r, row in enumerate(rows):
        cells = []
        for c, cell in enumerate(row.childNodes):
            if not hasattr(cell, 'tagName'):
                continue
            if cell.tagName not in ('table:table-cell', 'table:covered-table-cell'):
                continue
            span = int(cell.attributes.get(('urn:oasis:names:tc:opendocument:xmlns:table:1.0', 'number-columns-spanned'), 1))
            repeat = int(cell.attributes.get(('urn:oasis:names:tc:opendocument:xmlns:table:1.0', 'number-columns-repeated'), 1))
            ps = cell.getElementsByType(P)
            text = ''.join(str(p) for p in ps)
            text = text.replace('</text:p>', '').replace('<text:p>', '').replace('<text:p/>', '')
            cells.append(f'{cell.tagName}:{c}:{span}x{repeat}={text[:30]}')
        out.append(f'row{r+1}: ' + ' | '.join(cells))
    return '\n'.join(out)

with open('/tmp/example_rows.txt','w') as f:
    f.write(sheet_text('exampleA4004-2603N10.ods'))
with open('/tmp/gen_rows.txt','w') as f:
    f.write(sheet_text('A4004-2603N10.ods'))
print('done')
