不定期戯言2

戻る

検索条件:2019年1月19日 

2019/01/19(Sat)

表の結合

生徒のLT大会が終わったので,評価シートをマージしなくてはいけない。 LibreOffice calcの表をそのまま全員分貼り合わせればいいのだが, こんなの手作業でやりたくない。 最近Pythonを勉強中なので, それを使ってざくっとコードを書いてみた。 odfpyモジュールを使ってみたが, 肝心の表読み出しのところが少し面倒だった。

import pathlib from odf import number,text,table,opendocument `doc = opendocument.OpenDocumentSpreadsheet()` `tbl = table.Table(name="評価シート")` p = pathlib.Path(".") `for f in p.glob(“2018*.ods”): d = opendocument.load(str(f)) tables = d.spreadsheet.getElementsByType(table.Table) for t in tables: for r in t.getElementsByType(table.TableRow): row = table.TableRow() tbl.addElement(row) for c in r.getElementsByType(table.TableCell): cells = 1 repeat = c.getAttribute(“numbercolumnsrepeated”) vt = c.getAttribute(“valuetype”) if repeat: cells = int(repeat) while cells > 0: cell = table.TableCell(value=c, valuetype=vt) cell.addElement(text.P(text=c)) row.addElement(cell)`

`doc.spreadsheet.addElement(tbl)doc.save(“merge”,True)` (こっそり修正)