需求:客户提供Excel表格试题试卷,要求我们随机生成10份word文档试卷,试题内容随机排序。
读取Excel中数据生成word试卷定义生成试卷的总数
读取Excel中数据
"""
Created on Thu Jul 2 11:22:12 2020
@author: Administrator
"""
import xlrd
import random
from docx
import Document
from docx
.shared
import Pt
, RGBColor
from docx
.enum
.text
import WD_ALIGN_PARAGRAPH
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
)
obj
.option
.append
(sheet
.cell
(i
,4).value
)
obj
.option
.append
(sheet
.cell
(i
,5).value
)
obj
.option
.append
(sheet
.cell
(i
,6).value
)
obj
.score
= sheet
.cell
(i
,7).value
questionlist
.append
(obj
)
random
.shuffle
(questionlist
)
return questionlist
data5_word.xlsx表格数据:
生成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):
questionlist
=createQuestion
()
createPaper
('parer'+str(i
+1)+'.docx', '2020年第一季度内部考试', questionlist
)
验证结果: 生成十份word文档。 对比文档内容的排列:
对比同一题型的排列: 结论:参考实验结果,成功生成的word的数据里,不同的试题的题目和内容排列顺序是随机排列。 感谢慕课网、菜鸟网、易百网提供的技术辅导。