使用Python玩转word

    技术2023-03-27  99

    需求:客户提供Excel表格试题试卷,要求我们随机生成10份word文档试卷,试题内容随机排序。

    读取Excel中数据生成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的数据里,不同的试题的题目和内容排列顺序是随机排列。 感谢慕课网、菜鸟网、易百网提供的技术辅导。

    Processed: 0.018, SQL: 9