自动化办公-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)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值