需求:客戶提供Excel表格試題試卷,要求我們隨機生成10份word文檔試卷,試題內容隨機排序。
讀取Excel中數據
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 2 11:22:12 2020
@author: Administrator
"""
#總功能,讀取EXCEL中的題目,按照人數隨機輸出不同的題型。
import xlrd
import random
from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
#讀取Excel
data=xlrd.open_workbook('data5_word.xlsx')#表名
sheet=data.sheet_by_index(0)
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
data5_word.xlsx表格數據:
生成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
#試題題目
for question in questionlist:
subject=document.add_paragraph(style='List Number')
run=subject.add_run(question.subject)
run.bold=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 i in range(10):#隨機生成10份word試卷
questionlist=createQuestion()
createPaper('parer'+str(i+1)+'.docx', '2020年第一季度內部考試', questionlist)#傳送參數
驗證結果:
生成十份word文檔。
對比文檔內容的排列:
對比同一題型的排列:
結論:參考實驗結果,成功生成的word的數據裏,不同的試題的題目和內容排列順序是隨機排列。
感謝慕課網、菜鳥網、易百網提供的技術輔導。