关于使用Python docx Package将边框添加到word文档的查询

时间:2017-05-11 08:10:27

标签: python excel python-3.x ms-word python-docx

我正在尝试用Python编写一个程序,该程序从Excel文件中获取数据并使用它来创建Word文件。 例如,请考虑以下名为Problems.xlsx enter image description here

的Excel文件

我希望为此Excel文件中的所有13个问题创建一个名为:( Book Id) - (Chapter Id) - (Problem Id)的文件。每个文件应如下所示:

Ignore the file name, which is Docume nt1.docx。它应该是52289-9.2-59PS.docx。但请注意,第一行包含底部边框,左侧的文件名和公司名称(不变)以及今天的日期。

我无法在文档中添加边框并更改字体大小和名称。这是我到目前为止编写的代码。

from openpyxl import load_workbook
from docx import Document
from time import strftime
from docx.shared import Pt
#Accessing data from excel file. 
ws=load_workbook(filename="Problems.xlsx")
sheet=ws.get_sheet_by_name('Sheet2')
for i in range(2,15):
    fileName=""
    for j in range(1,4):
        if j!=3:
            fileName=fileName+str(sheet.cell(row=i,column=j).value)+"-"
        else:
            fileName=fileName+str(sheet.cell(row=i,column=j).value)
    #Now we have the file names, so let's make a file  
    document=Document()
    run=document.add_paragraph().add_run()
    font=run.font
    font.name="Times New Roman"
    font.size=12
    date=strftime("%d/%m/%Y")
    document.add_paragraph(fileName+"                                                                                           AID: 1112|"+date)
    document.add_paragraph("--------------------------------------------------------------------------------------------------------------------")
    #Saving the document with the fileName
    document.save(fileName+".docx")

上面的代码创建了具有正确名称的文件,但有两个关键问题:

  1. 字体仍然是Calibri而不是Times New Roman,字体大小为11而不是12。
  2. 我现在添加了虚线,但我真的想要一个底部边框,你通常会点击红色圆圈的按钮。

1 个答案:

答案 0 :(得分:0)

经过反复试验,以下代码可以解决我在问题中提到的问题。

from openpyxl import load_workbook
from docx import Document
from time import strftime
from docx.shared import Pt
#Accessing data from excel file. 
ws=load_workbook(filename="Problems.xlsx")
sheet=ws.get_sheet_by_name('Sheet2')
for i in range(2,15):
    fileName=""
    for j in range(1,4):
        if j!=3:
            fileName=fileName+str(sheet.cell(row=i,column=j).value)+"-"
        else:
            fileName=fileName+str(sheet.cell(row=i,column=j).value)
    #Now we have the file names, so let's make a file  
    document=Document()
    style=document.styles['Normal']
    font=style.font
    font.name="Times New Roman"
    font.size=Pt(12)
    date=strftime("%d/%m/%Y")
    font.underline=True
    document.add_paragraph(fileName+"                                                                       AID: 1112|"+date,style='Normal')
    #Saving the document with the fileName
    document.save(fileName+".docx")