表の結合
生徒のLT大会が終わったので,評価シートをマージしなくてはいけない。 LibreOffice calcの表をそのまま全員分貼り合わせればいいのだが, こんなの手作業でやりたくない。 最近Pythonを勉強中なので, それを使ってざくっとコードを書いてみた。 odfpyモジュールを使ってみたが, 肝心の表読み出しのところが少し面倒だった。
import pathlibfrom 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 = 1repeat = 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)` (こっそり修正)