Python利用xlrd与python-docx自动生成Word试卷
本文介绍如何使用Python脚本将Excel中的试题数据自动转换为Word格式的试卷。通过结合xlrd读取Excel文件与python-docx生成Word文档,实现试题的随机抽取与排版。文章包含环境配置、核心代码实现及效果展示,适用于批量生成内部考试试题的场景。
本示例展示了利用Python语言实现特定考试系统生成Word试卷的具体代码,供读者参考学习。
提示:完成文章编写后,可利用右侧帮助文档自动生成目录。
准备工作
首先需要准备存放试题信息的Excel文件,文件名为data.xls。

其次,需安装Python运行所需的依赖模块。
pip install xlrd
pip install python-docx
以下是具体的代码实现案例,供参考。
代码实现
#!/bin/bash env python
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('data.xls')
#获取工作表
sheet = data.sheet_by_index(0)
class Question:
pass
def create_question():
question_list = []
for i in range(sheet.nrows):
if i>2:
#创建试题类
question = Question()
question.ID = sheet.cell(i,0).value
#添加试题的题目信息
question.subject = sheet.cell(i,1).value
#添加题目类型
question.question_type = sheet.cell(i,2).value
#添加试题选项
question.option = []
question.option.append(sheet.cell(i, 3).value) # A
question.option.append(sheet.cell(i, 4).value) # B
question.option.append(sheet.cell(i, 5).value) # C
question.option.append(sheet.cell(i, 6).value) # D
#添加分值
question.score = sheet.cell(i,7).value
question_list.append(question)
#将试卷题目随机打乱并且返回
random.shuffle(question_list)
return question_list
def create_papper(file_name,paper_name,question_list):
#创建一个文档对象
document = Document()
#设置页眉的位置信息
section = document.sections[0]
header = section.header
p1 = header.paragraphs[0]
p1.text = paper_name
#设置页脚信息
footer = section.footer
p2 = footer.paragraphs[0]
p2.text = '内部试题,禁止泄露'
#写入试卷基本信息
titile = document.add_heading(paper_name,level=1)
#设置对齐方式
titile.alignment = WD_ALIGN_PARAGRAPH.CENTER
#添加一个段落
p3 = document.add_paragraph()
p3.add_run('姓名:____')
p3.add_run('班级:____')
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
#写入试题信息
for i,question in enumerate(question_list):
subject_paragraph = document.add_paragraph() #添加一个段落
run = subject_paragraph.add_run(str(i+1)+str(question.subject)) #添加题目信息
run.bold = True #设置加粗
subject_paragraph.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(file_name)
return
if __name__ == '__main__':
question_list = create_question()
#循环生成100份试卷
for item in range(1,100):
create_papper('2021第'+str(item)+'套内部考试试题.docx','2021第一季度内部考试',question_list)
print('over')
运行效果


总结
本案例综合运用了xlrd模块读取数据与python-docx模块写入Word的功能,是一个典型的读写练习。
以上就是本文的全部内容,希望能为读者的学习提供帮助,同时也欢迎大家对本站给予支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









