关键词:在线考试平台导入题库、问卷星题库导入、考试星Excel模板、企业培训测评题库、批量导入考试题目
企业培训、测评机构把沉淀题库搬进在线考试平台时,卡点几乎都在导入模板------不同平台对字段、题型、选项排列的约定各不相同。下面按"先对齐字段、再写转换脚本"的思路过一遍。
一、主流平台导入字段对照
| 平台 | 题型列取值 | 选项排列 | 多选答案 | 是否有模板 | |
|---|---|---|---|---|---|
| 问卷星 | 单选/多选/判断 | 每题一行,选项单列 | `A | B` | 有 |
| 考试星 | 单选题/多选题 | 选项分列 | AB |
有 | |
| 腾讯问卷 | single/multiple | 选项单列 | A,B |
有 | |
| 自建系统 | 自定义枚举 | 视约定 | 视约定 | 一般无 |
规律:题干 + 选项 + 答案 + 解析是四要素,差异只在"选项单列 vs 分列"和"多选答案分隔符"。
二、把标准题库转成平台模板
标准题库通常是选项分列(option_a~d)。导入问卷星这类"选项单列"平台时,需要把四列拼回一行。转换环节如果需要从 Word/PDF 先批量产出标准题库,可以用 ExamParser(https://examparser.com/cn/)把原始卷子转成结构化 Excel,再接下面的映射脚本。
python
import pandas as pd
df = pd.read_excel("bank.xlsx") # 含 question, option_a..d, answer, analysis
def join_options(row):
opts = [row[f"option_{c}"] for c in "abcd" if pd.notna(row[f"option_{c}"])
# 平台要求 "A. 文本|B. 文本" 形式
return "|".join(f"{i}. {v}" for i, v in zip("ABCD", opts))
out = pd.DataFrame()
out["题型"] = df["type"].map({
"single": "单选", "multi": "多选", "judge": "判断", "fill": "填空"
})
out["题目"] = df["question"].astype(str).str.strip()
out["选项"] = df.apply(join_options, axis=1)
# 多选答案用 | 分隔
out["正确答案"] = df["answer"].astype(str).str.strip().str.replace("", "|", regex=False) \
.str.replace(r"([A-D])(?=[A-D])", r"\1|", regex=True)
out["解析"] = df.get("analysis", "")
out.to_excel("wenjuanxing_import.xlsx", index=False)
print(f"生成 {len(out)} 行")
三、导入前必查三项
- 题型取值是否落在平台枚举内(自建系统尤甚)
- 多选答案分隔符与平台约定一致
- 含图片题确认平台支持图床/外链,且链接可访问
四、小结
平台只是模板不同,题库本体只要保持"四要素结构化",换平台就是一次映射脚本的成本。建议机构把题库统一维护成一张标准 Excel,对外永远是导出而非重新录入。