Python操作Word文档,建表

我们介绍几种使用python创建word文档的方法,分别使用jinja2、docx、win32com

一、使用jinja2模板创建word文档(推荐)

使用这种方法,我们需要一个xml模板,之后将需要插入的数据通过变量传递,就能出色的达到目的,完全不需要考虑word中复杂的格式设置。

    1.新建一个word文档,按需要创建表格,段落等,设置好想要的格式,之后以xml形式保存为“template.xml”。

例:

    

    

    2.利用编辑器工具打开template.xml(如pycharm,然后利用快捷键格式化该文件Ctrl+Alt+L)

    找到我们在文档中写入的内容,如标题“Hello”(<w:document>——<w:body>下的<w:p>)

    

    红框中的<w:p>就是标题的整个设置,<w:t>中则是标题的具体内容,现在我们把Hello替换为{{ document.title }}

    如:<w:t>{{ document.title }}</w:t>

    同理hello word!这个段落我们也以相同方法替换为{{ document.para }}

    3.接下来我们处理表格相关的内容

    传递参数document.table,这是一个列表T1,T1中每个元素也是一个列表r1,r2,r3…rn;

    r1,r2,r3…rn指代表中的行,它们中的元素则代表该行的每个单元,这里以for循环来依次写入表中数据

    

4.通过jinja2向模板传递参数,并保存到文件

from jinja2 import Environment, FileSystemLoader

def create_word(document_data):

env = Environment(loader=FileSystemLoader('./'))

template = env.get_template("template.xml")

render_content = template.render(document=document_data)

with open("D:/py/Performance Analysis/hello.xml", "w", encoding="utf-8") as f:

f.write(render_content)

if __name__ == '__main__':

document = {"title": "Hello",

"para": "hello world. I'm fine!",

"table": [["", "Anna", "Joe"],

["ID", "001", "002"],

["height", "165", "180"],

["Age", "21", "21"]]}

create_word(document)

    接下来就是见证奇迹的时刻!

    文档中表格等的具体格式可以通过模板事先设置好,之后替换变量,传递数据,就能很容易实现想要的效果

二、docx模块

    同样以建立表格为例,这里新建一个3x3的表格

from docx import Document

def create_table(row, column):

document = Document()

table = document.add_table(rows=row, cols=column,)

table.autofit = False

for row_index, rows_obj in enumerate(table.rows):

for col_index, cell_obj in enumerate(rows_obj.cells):

cell_obj.text = "123456789"

document.save('test.docx')

if __name__ == '__main__':

create_table(3, 3)

    

以上是 Python操作Word文档,建表 的全部内容, 来源链接: utcz.com/a/52182.html

回到顶部