Python操作Word文档,建表

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

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

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

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

例:

    Python操作Word文档,建表_第1张图片

    Python操作Word文档,建表_第2张图片

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

    找到我们在文档中写入的内容,如标题“Hello”(——下的

    Python操作Word文档,建表_第3张图片

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

    如:{ { document.title }}

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

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

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

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

    Python操作Word文档,建表_第4张图片

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) 

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

Python操作Word文档,建表_第5张图片

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

二、docx模块

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

from docx import Document

def create_table(row, column):
    document = Document()
    table = document.add_table(rows=row, cols=column, style='Table Grid')
    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文档,建表_第6张图片

你可能感兴趣的:(python学习,python,word,jinja2)