🔖

Mark2の座標ファイルからMark2リポジトリのJSONに変換するPythonプログラム

に公開

Mark2リポジトリとは

マークシートシステム Mark2ではマーク認識の際にマーク座標のエクセルファイルを指定する必要がありますが、大規模な運用の際にはマーク座標をWeb上のJSONファイルで指定することもできます。この機能をMark2リポジトリと呼んでいます。

定義ファイルの作成

Mark2の座標ファイルからMark2リポジトリのJSONに変換する際には以下のようなPythonプログラムを利用しています。

エクセルのシート名が調査のサブタイトルになります。

import json
import openpyxl

title = "Mark2リポジトリのサンプル"
payloads = []
wb = openpyxl.load_workbook("sample0000.xlsx")

for sheetname in wb.sheetnames:
    ws = wb[sheetname]
    rows = []

    for row in ws.iter_rows(values_only=True):
        rows.append(row)

    payload = {
        "name": sheetname,
        "values": rows,
    }
    payloads.append(payload)

with open("sample0000.json", "w") as f:
    json.dump({"name": title, "payloads": payloads}, f)

エラーが起きやすい部分

エクセルファイルの末尾に空行があるとMark2でマーク認識した際にエラーが発生するので、エクセルから空行を取り除いてからプログラムを実行しなおします。

Discussion