表の結合
生徒の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)` (こっそり修正)