Esempio n. 1
0
 def read(self, stream, filetype, **kw):
     f = zipfile.ZipFile(stream, 'r')
     ss = xp.quickRead(f.open('content.xml'))
     f.close()
     doc = gicdat.doc.Doc()
     for i, t in enumerate(xp.quickSearch(ss, 'table:table', 10, True)):
         dat = table2array(t)
         n = {}
         for key in t:
             if not key.startswith("_"):
                 n[key] = t[key]
         n[''] = 'opendocument.spreadsheet.table'
         n['table'] = dat
         doc.set('sheet%i' % (i + 1,), n)
     return (gicdat.doc.Doc(doc), None)
Esempio n. 2
0
def table2array(d):
    rows = xp.quickSearch(d, 'table:table-row', 3, True)
    tab = []
    mel = 0
    mnc = 0
    mnr = 0
    ri = 0
    for r in rows:
        rl, melr = row2list(r)
        mel = max(mel, melr)
        mnc = max(mnc, len(rl))
        nreps = int(r.get('table:number-rows-repeated', 1))
        for i in range(nreps):
            tab.append(rl)
        if rl:
            mnr = len(tab)
    if not all([mel, mnc, mnr]):
        return numpy.zeros((0, 0), str("|S1"))
    dts = "|S%i" % mel
    ta = numpy.zeros((mnr, mnc), str(dts))
    for i in range(mnr):
        for j, s in enumerate(tab[i]):
            ta[i, j] = s
    return ta