使用python-docx生成Word文档

作者: 码农小杨 | 来源:发表于2017-02-17 14:49 被阅读6848次

    学会来使用python操作数据表和PDF,今天我们尝试下使用python操作Word文档。

    首先是安装python-docx:(centos环境)

    pip  install python-docx
    

    基本方法使用:

    from  docx import  Document
    from  docx.shared import  Pt
    from  docx.oxml.ns import  qn
    from docx.shared import Inches
    
    #打开文档
    document = Document()
    
    #加入不同等级的标题
    document.add_heading('Document Title',0)
    document.add_heading(u'二级标题',1)
    document.add_heading(u'二级标题',2)
    
    #添加文本
    paragraph = document.add_paragraph(u'添加了文本')
    #设置字号
    run = paragraph.add_run(u'设置字号')
    run.font.size=Pt(24)
    
    #设置字体
    run = paragraph.add_run('Set Font,')
    run.font.name='Consolas'
    
    #设置中文字体
    run = paragraph.add_run(u'设置中文字体,')
    run.font.name=u'宋体'
    r = run._element
    r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    
    #设置斜体
    run = paragraph.add_run(u'斜体、')
    run.italic = True
    
    #设置粗体
    run = paragraph.add_run(u'粗体').bold = True
    
    #增加引用
    document.add_paragraph('Intense quote', style='Intense Quote')
    
    #增加有序列表
    document.add_paragraph(
        u'有序列表元素1',style='List Number'
    )
    document.add_paragraph(
        u'有序列别元素2',style='List Number'
    )
    
    #增加无序列表
    document.add_paragraph(
        u'无序列表元素1',style='List Bullet'
    )
    document.add_paragraph(
        u'无序列表元素2',style='List Bullet'
    )
    
    #增加图片(此处使用相对位置)
    document.add_picture('jdb.jpg',width=Inches(1.25))
    
    #增加表格
    table = document.add_table(rows=3,cols=3)
    hdr_cells=table.rows[0].cells
    hdr_cells[0].text="第一列"
    hdr_cells[1].text="第二列"
    hdr_cells[2].text="第三列"
    
    hdr_cells = table.rows[1].cells
    hdr_cells[0].text = '2'
    hdr_cells[1].text = 'aerszvfdgx'
    hdr_cells[2].text = 'abdzfgxfdf'
    
    hdr_cells = table.rows[2].cells
    hdr_cells[0].text = '3'
    hdr_cells[1].text = 'cafdwvaef'
    hdr_cells[2].text = 'aabs zfgf'
    
    #增加分页
    document.add_page_break()
    
    #保存文件
    document.save('demo.docx')
    

    效果展示:

    Paste_Image.png

    相关文章

      网友评论

      • 宗七七:如何继承原本的段落、文字格式,仅仅替换文档的部分内容?求回复
        宗七七:@神oooo殇 有没有操作excel的模块,类似可以达到docxtpl的能力,对excel内容进行保留格式进行修改。
        宗七七:@神oooo殇 多谢老哥,这个模块正是我需要的,老哥真是见多识广啊
        3b37cbce9663:docxtpl 模块
      • 又指动石:报错:All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters 怎么解决?
      • 662e8bd8a752:请问一下,add_heading()加的标题是深蓝的,怎么改成黑色呢
        662e8bd8a752:我好像实现了,这样可以改:
        head = document.add_heading()
        run = head.add_run(u"标题1")
        run.font.name=u'宋体'
        run.font.color.rgb=RGBColor(0x00,0x00,0x00)
      • 知识学者:这篇文章不错,:grin:
      • b0a20c225b5f:请问一下可以在表格里插入图片吗?
        dccddacfe99e:请问 python3 为什么报这个错误:ModuleNotFoundError: No module named 'exceptions'
        b0a20c225b5f:@海贼之路飞 好像并不行。。。而且Heading里的字体为啥不能设置,蓝瘦
        码农小杨:@Miracle__0bf2 试试你
      • bc86a494906d:请教一下,我在python27/python33下+python-docx0.86调用document.add_picture添加的图片在生成的docx文档中都无法显示。想知道你有没有遇到过这样的情况?谢谢!
        bc86a494906d:你用的Office版本是多少呢?我用2007提示文档有错,但可以显示出图片,2010/13/16三个版本则直接提示无法显示图片。而用wps则可以显示出图片来。我看到网卡大家给出的例子都能正常显示图片,看来我还得再找找原因了。谢谢!
        码农小杨:没有哎 多试几次
      • 9f6e9dde4373:# -*- coding: GBK-*- #
      • 9f6e9dde4373:SyntaxError: (unicode error) 'utf8' codec can't decode byte 0xb6 in position 0: invalid start byte
      • 889c3dd11c4c:我想知道表格里面的文本怎么居中,还有表格线能在打印的时候显示出来😁
      • 爱捣腾的吴大爷:我就想知道图片插进去后如何居中?
      • 常志伟的胡思乱想:用着感觉不错
        码农小杨:@changzw 四高矮
        常志伟的胡思乱想: @海贼之路飞 那是我在word里面的显示设置 显示所有的隐藏标记 免得排版时候被坑
        码农小杨:按着你的代码写的,没有生成虚拟表格线啊:flushed:

      本文标题:使用python-docx生成Word文档

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