Python自动化 考试系统生成Word
导入模块
#pywin32是WIndows的API #安装python没有win32com,需要pip install pypiwin32进行安装 from win32com.client import constants,gencache #系统 import os
读取Excel
#1.读取Excel #创建打开excel对象 data = xlrd.open_workbook('data3.xlsx') #打开工作表对象 sheet = data.sheet_by_index(0) #索引
首先使用open_workbook()打开工作簿,使用sheet_by_index()索引第一个工作表
定义类进行存储数据
#定义类进行存储数据 class Question: pass
定义方法组装试卷
#定义方法组装试卷 def createQuestion(): questionlist = [] #存储问题列表 #循环遍历每行 for i in range(sheet.nrows): if i>1: Obj = Question() #实例化类 Obj.subject = sheet.cell(i,1).value #题目 Obj.questiontype = sheet.cell(i,2).value #题型 Obj.option = [] Obj.option.append(sheet.cell(i,3).value) #A Obj.option.append(sheet.cell(i,4).value) #B Obj.option.append(sheet.cell(i,5).value) #C Obj.option.append(sheet.cell(i,6).value) #D Obj.score = sheet.cell(i,7).value #分值 questionlist.append(Obj) random.shuffle(questionlist) #将序列的所有的元素随机排序 return questionlist
创建一个对象实例化,将各个参数存储在实例化对象中,然后添加到数组questionlist,然后使用random随机改变选项数据,最后返回数组的数据questionlist数据
生成试卷
#生成word试卷 ''' filename: papername:试卷的名称 questionlist:试卷的题 ''' 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) #level设置为一级标题 title.alignment = WD_ALIGN_PARAGRAPH.CENTER #设置标题居中 ##添加段落 info = document.add_paragraph() #添加段落 info.add_run('姓名:______') #追加信息 info.add_run('所属部门:______') #追加信息 info.alignment = WD_ALIGN_PARAGRAPH.CENTER #设置段落居中 #具体试题的信息 ##循环遍历试题列表 for question in questionlist: #添加段落 subject = document.add_paragraph(style='List Number') #style中添加序号 run = subject.add_run(question.subject) #追加题目 run.bold = True #题目加粗 subject.add_run('[%s]分'%(question.score)) random.shuffle(question.option) #随机洗牌选项 #循环遍历option for index,option in enumerate(question.option): #添加段落,ABCD document.add_paragraph(('ABCD')[index]+(str(option))) #存储文档 document.save(filename)
生成文档,设置页眉页脚的信息,然后再设置试卷的基本信息,使用for循环遍历questionlist循环添加题目和选项,最后使用document.save()保存文档
生成多个试卷
for i in range(10): #生成多个试卷 questionlist = createQuestion() #文件名称 试卷名称 问题 createPaper('paper'+str(i+1)+'.docx','2020年第一季度内部考试',questionlist)
使用for循环创建10个试卷,createPaper()添加对应的实际参数,第一个参数文件名,第二个参数试卷标题,第三个参数是试题库
    M54

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号