具体生成word的代码官方示例在文末
下面只介绍图片居中的方法,因为docx库add_picture()方法不支持对图片位置的设置。所以有两种思路:
1、新建一个1行3列的表格,在中间的一列中插入图片
2、改变段落的位置(直接将最近的一个段落更改)
图片居中的方法:
第一个方法:
def add_center_picture(self, image_path_or_stream, width=None, height=None):# run = self.doc.add_paragraph().add_run()tab = self.doc.add_table(rows=1, cols=3) # 添加一个1行3列的空表cell = tab.cell(0, 1) # 获取某单元格对象(从0开始索引)ph =cell.paragraphs[0]run = ph.add_run()# run.add_break()run.add_picture(image_path_or_stream, width=width, height=height)
第二个方法:
def align_center(self):last_paragraph = self.doc.paragraphs[-1]last_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER
效果如图:
python-docx生成word文档官方示例
from docx import Documentfrom docx.shared import Inchesdocument = Document()document.add_heading('Document Title', 0)p = document.add_paragraph('A plain paragraph having some ')p.add_run('bold').bold = Truep.add_run(' and some ')p.add_run('italic.').italic = Truedocument.add_heading('Heading, level 1', level=1)document.add_paragraph('Intense quote', style='Intense Quote')document.add_paragraph('first item in unordered list', style='List Bullet')document.add_paragraph('first item in ordered list', style='List Number')document.add_picture('monty-truth.png', width=Inches(1.25))records = ((3, '101', 'Spam'),(7, '422', 'Eggs'),(4, '631', 'Spam, spam, eggs, and spam'))table = document.add_table(rows=1, cols=3)hdr_cells = table.rows[0].cellshdr_cells[0].text = 'Qty'hdr_cells[1].text = 'Id'hdr_cells[2].text = 'Desc'for qty, id, desc in records:row_cells = table.add_row().cellsrow_cells[0].text = str(qty)row_cells[1].text = idrow_cells[2].text = descdocument.add_page_break()document.save('demo.docx')