栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

自动化办公-Python处理Excel生成试卷

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动化办公-Python处理Excel生成试卷

效果图



思路

通过处理excel中不同的sheet,将每个题的顺序还有题内选项的顺序随机处理后,生成不同版本的试题
使用到的库

import random
import xlrd
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
获取试题列表
wb = xlrd.open_workbook('./file/试题2.xls')
创建试题列表
class Question:
    pass


def createQuestion(sheet):
    # 创建试题列表
    questionList = []
    for i in range(sheet.nrows):
        if i > 1:
            obj = Question()
            # 题目
            obj.subject = sheet.cell_value(i, 1, )
            # 题型
            obj.questionType = sheet.cell_value(i, 2, )
            # 选项A,B,C,D
            obj.option = []
            obj.option.append(sheet.cell_value(i, 3))
            obj.option.append(sheet.cell_value(i, 4))
            obj.option.append(sheet.cell_value(i, 5))
            obj.option.append(sheet.cell_value(i, 6))
            # 分值
            obj.score = sheet.cell_value(i, 7)
            questionList.append(obj)
    # 将序列中所有元素随机排序
    random.shuffle(questionList)
    return questionList
生成Word试卷模板
# 生成word试卷模板
def createPaper(filename,papername,questionlist):
    document = Document()
    # 页眉页脚
    section = document.sections[0]
    header = section.header
    p1=header.paragraphs[0]
    p1.text = papername
    footer = section.footer
    p2=footer.paragraphs[0]
    p2.text = '内部试题,禁止泄露!!!'
    # 试卷基本信息
    title= document.add_heading(papername,level=1)
    title.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p3 = document.add_paragraph()
    p3.add_run('姓名:________')
    p3.add_run('所属部门:________')
    p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
    # 试题信息
    number =0
    for question in questionlist:
        number+=1
        subject = document.add_paragraph()
        run = subject.add_run('%d '%number+question.subject)
        # 题目加粗
        run.blod=True
        subject.add_run('[%s]分'%str(question.score))
        # 打乱选项的顺序
        random.shuffle(question.option)
        for index,option in enumerate(question.option):
            document.add_paragraph(('ABCD')[index]+str(option))
    document.save(filename)
创建试卷
for j in range(len(wb.sheets())):
    sheet = wb.sheet_by_index(j)
    for i in range(5):
        questionList = createQuestion(sheet)
        createPaper('./file/%s'%sheet.name+str(i+1)+'.docx','2022年%s'%sheet.name+'第一次考试',questionList)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001964.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号