美文网首页
用 Python 自动生成 Word 文档

用 Python 自动生成 Word 文档

作者: cloveses | 来源:发表于2018-08-14 15:53 被阅读0次

    当然要用第三方库啦 :)

    使用以下命令安装:

    pip install  python-docx

    使用该库的基本步骤为:

    1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件)。

    2.设置文档的格式(默认字体、页面边距等)。

    3.在文档对象中加入段落文本、表格、图像等,并指定其样式。

    4.保存文档。

    注:本库仅支持生成Word2007以后版本的文档类型,即扩展名为.docx 的。

    下面分步介绍其基本使用方法:

    步骤一:

    from docx import Document

    doc = Document()                #以默认模板建立文档对象

    doc = Document('a.docx')     # 读取a.docx文档,建立文档对象

    步骤二:

    from docx.shared import Inches,Pt

    def chg_font(obj,fontname='微软雅黑',size=None):

        ## 设置字体函数

        obj.font.name = fontname

        obj._element.rPr.rFonts.set(qn('w:eastAsia'),fontname)

        if size and isinstance(size,Pt):

            obj.font.size = size

    distance = Inches(0.3)

    sec = doc.sections[0]             # sections对应文档中的“节”

    sec.left_margin = distance     # 以下依次设置左、右、上、下页面边距

    sec.right_margin = distance

    sec.top_margin = distance

    sec.bottom_margin = distance

    sec.page_width =Inches(12)        #设置页面宽度

    sec.page_height = Inches(20)       #设置页面高度

    ##设置默认字体

    chg_font(doc.styles['Normal'],fontname='宋体')

    步骤三:

    1.添加段落文本

    paragraph =doc.add_paragraph('text....')

    ph_format =paragraph.paragraph_format

    ph_format.space_before =Pt(10)     #设置段前间距

    ph_format.space_after =Pt(12)       #设置段后间距

    ph_format.line_spacing=Pt(19)       #设置行间距

    如果希望同一段落中的文本格式不同,就需要使用Run对象(可以理解为可以单独设置格式的段落内对象)。

    如:

    run = paragraph.add_run('text...')

    run.bold = True #设置字体为粗体

    chg_font(run,fontname='微软雅黑', size=Pt(12))  #设置字体和字号

    2.添加表格,并写入相关内容

    tab =doc.add_table(rows=4,cols=4)   #添加一个4行4列的空表

    cell=tab.cell(1,3)  #获取某单元格对象(从0开始索引)

    在单元格中添加文本:

    cell.text='abc'

    在单元格中添加多行文本(指定转行)

    ph =cell.paragraphs[0]

    run=ph.add_run(‘text....’)'

    run.add_break()               # 添加一个折行

    run.add_picture('a.png')   # 插入图像,可以是内存中的图像,width=Inches(1.0)指定宽度。

    3.在文档中添加图像:

    doc.add_picture('a.png')

    步骤四:

    doc.save('a.docx')       # 保存图像

    做一个简单的测试,其生成文档的速度还是比较快的。感觉比以前用reportlab库生成PDF文档要快不少呢!

    下图是用此方式生成docx文档的截图:

    相关文章

      网友评论

          本文标题:用 Python 自动生成 Word 文档

          本文链接:https://www.haomeiwen.com/subject/nwtcbftx.html