表の結合
生徒の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) cells -= 1 doc.spreadsheet.addElement(tbl) doc.save("merge",True)
(こっそり修正)
コメントの受付は終了しました。