使用Python玩轉word

需求:客戶提供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的數據裏,不同的試題的題目和內容排列順序是隨機排列。
感謝慕課網、菜鳥網、易百網提供的技術輔導。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章