- Complete survey management system with web interface - Question generation tools and prompts - Report generation and analysis capabilities - Docker configuration for deployment - Database initialization scripts 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import json
|
|
from openpyxl import load_workbook
|
|
|
|
def convert_excel_to_json():
|
|
"""将合并题库.xlsx转换为JSON格式"""
|
|
excel_file = '/Users/moshui/Documents/survey/output/合并题库.xlsx'
|
|
json_file = '/Users/moshui/Documents/survey/public/questions.json'
|
|
|
|
try:
|
|
# 读取Excel文件
|
|
wb = load_workbook(excel_file)
|
|
ws = wb['单选题']
|
|
|
|
questions = {
|
|
"基础题": [],
|
|
"进阶题": [],
|
|
"竞赛题": []
|
|
}
|
|
|
|
# 获取表头
|
|
headers = []
|
|
for cell in ws[1]:
|
|
headers.append(cell.value)
|
|
|
|
# 读取数据行
|
|
for row in ws.iter_rows(min_row=2, values_only=True):
|
|
if len(row) < len(headers):
|
|
continue
|
|
|
|
question_data = {}
|
|
for i, header in enumerate(headers):
|
|
if header and i < len(row):
|
|
question_data[header] = row[i] if row[i] is not None else ""
|
|
|
|
# 跳过空题目
|
|
if not question_data.get('题干', '').strip():
|
|
continue
|
|
|
|
# 确定题目类型(基于分数)
|
|
score = int(question_data.get('分数', 5))
|
|
if score == 5:
|
|
question_type = "基础题"
|
|
elif score == 10:
|
|
question_type = "进阶题"
|
|
elif score == 15:
|
|
question_type = "竞赛题"
|
|
else:
|
|
question_type = "基础题" # 默认
|
|
|
|
# 添加题目元数据
|
|
question_data['题目类型'] = question_type
|
|
question_data['题目标签'] = question_data.get('标签', '').strip()
|
|
|
|
questions[question_type].append(question_data)
|
|
|
|
# 保存为JSON文件
|
|
with open(json_file, 'w', encoding='utf-8') as f:
|
|
json.dump(questions, f, ensure_ascii=False, indent=2)
|
|
|
|
print(f"成功转换题库,共:")
|
|
print(f" 基础题: {len(questions['基础题'])} 道")
|
|
print(f" 进阶题: {len(questions['进阶题'])} 道")
|
|
print(f" 竞赛题: {len(questions['竞赛题'])} 道")
|
|
print(f"JSON文件已保存到: {json_file}")
|
|
|
|
return questions
|
|
|
|
except Exception as e:
|
|
print(f"转换失败: {str(e)}")
|
|
return None
|
|
|
|
if __name__ == "__main__":
|
|
convert_excel_to_json() |