qjj19931230
  • 安装 python-docx

    处理 Word 需要用到 python-docx 库,目前版本为 0.8.10 ,执行如下安装命令:

  • 写入 Word

    平时我们在操作 Word 写文档的时候,一般分为几部分:标题、章节、段落、图片、表格、引用以及项目符号编号等。下面我们就按这几部分如何用 Python 操作来一一介绍。

    标题

    文档标题创建比较简单,通过 Document() 创建出一个空白文档,只要调用 add_heading 方法就能创建标题。

  • # word_1.py
    
    # 导入库
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建空白文档
    doc1 = Document()
    
    # 新增文档标题
    doc1.add_heading(\'如何使用 Python 创建 Word\',0)
    
    # 保存文件
    doc1.save(\'word1.docx\')

     

  • 这样就完成了创建文档和文章标题的操作,下面通过命令 python word_1.py 运行程序,会生成名为 word1.docx 的文档,打开文章显示如下图所示:
  •  

     

  • 章节与段落

    有了文章标题,下面我们来看章节和段落是怎么操作的,在上面代码后面增加章节和段落操作的代码如下:

  • # word_1.py
    
    # 导入库
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建空白文档
    doc1 = Document()
    
    # 新增文档标题
    doc1.add_heading(\'如何使用 Python 创建 Word\',0)
    
    # 创建段落描述
    doc1.add_paragraph(\'我们平时使用 Word 用来做文章的处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……\')
    
    # 创建一级标题
    doc1.add_heading(\'安装 python-docx 库\',1)
    
    # 创建段落描述
    doc1.add_paragraph(\'现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:\')
    
    # 创建二级标题
    doc1.add_heading(\'第一步:安装 Python\',2)
    
    # 保存文件
    doc1.save(\'word1.docx\')

     

  • 上面我们说了 add_heading 方法用来增加文章标题,不过通过上面代码我们能知道,这个方法的第二上参数为数字,其实这个就是用来标示几级标题的,在我们平时就用来标示章节。add_paragraph 方法则是用来在文章中增加段落的,那我们现在就通过命令python word_1.py 运行程序看下效果:
  •  

     

  • 字体和引用

    前面我们通过 add_paragraph 方法增加了两个段落,现在我们就看下如何对段落中字体如何操作,以及引用段落的操作。继续修改以上代码,增加对文章字体字号、加粗、倾斜等操作,具体代码如下:

  • # word_1.py
    
    # 导入库
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    
    # 新建空白文档
    doc1 = Document()
    
    # 新增文档标题
    doc1.add_heading(\'如何使用 Python 创建 Word\',0)
    
    # 创建段落描述
    doc1.add_paragraph(\'我们平时使用 Word 用来做文章的处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……\')
    
    # 创建一级标题
    doc1.add_heading(\'安装 python-docx 库\',1)
    
    # 创建段落描述
    doc1.add_paragraph(\'现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:\')
    
    # 创建二级标题
    doc1.add_heading(\'第一步:安装 Python\',2)
    
    # 创建段落,添加文档内容
    paragraph = doc1.add_paragraph(\'这是第一步的安装描述!\')
    
    # 段落中增加文字,并设置字体字号
    run = paragraph.add_run(\'(注意:这里设置了字号为20)\')
    run.font.size = Pt(20)
    
    # 设置英文字体
    run = doc1.add_paragraph(\'这里设置英文字体:\').add_run(\'This Font is Times New Roman \')
    run.font.name = \'Times New Roman\'
    
    # 设置中文字体
    run = doc1.add_paragraph(\'这里设置中文字体:\').add_run(\'当前字体为黑体\')
    run.font.name=\'黑体\'
    r = run._element
    r.rPr.rFonts.set(qn(\'w:eastAsia\'), \'黑体\')
    
    # 设置斜体
    run = doc1.add_paragraph(\'这段设置:\').add_run(\'文字的是斜体 \')
    run.italic = True
    
    # 设置粗体
    run = doc1.add_paragraph(\'这段再设置:\').add_run(\'这里设置粗体\').bold = True
    
    # 设置字体带下划线
    run = doc1.add_paragraph(\'这段为下划线:\').add_run(\'这里设置带下划线\').underline = True
    
    # 设置字体颜色
    run = doc1.add_paragraph(\'这段字体为红色:\').add_run(\'这里设置字体为红色\')
    run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
    
    # 增加引用
    doc1.add_paragraph(\'这里是我们引用的一段话:人生苦短,我用Python。\', style=\'Intense Quote\')
    
    # 保存文件
    doc1.save(\'word1.docx\')

     

  • 上面代码主要是针对段落字体的各种设置,每段代码都标有注释应该比较容易理解,现在通过命令 python word_1.py 运行程序看下效果:
  •  

     

  • 项目列表

    我们平时在使用 Word 时,为了能展示更清晰,会用到项目符号和编号,将内容通过列表的方式展示出来,下面我们新建一个文件 word_2.py 并编写如下代码:

  • # word_2.py
    
    # 导入库
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建文档
    doc2 = Document()
    
    doc2.add_paragraph(\'哪个不是水果:\')
    
    # 增加无序列表
    doc2.add_paragraph(
        \'苹果\', style=\'List Bullet\'
    )
    doc2.add_paragraph(
        \'香蕉\', style=\'List Bullet\'
    )
    doc2.add_paragraph(
        \'馄炖\', style=\'List Bullet\'
    )
    
    doc2.add_paragraph(\'2020年度计划:\')
    # 增加有序列表
    doc2.add_paragraph(
        \'每周健身一天\', style=\'List Number\'
    )
    doc2.add_paragraph(
        \'学习50本书\', style=\'List Number\'
    )
    doc2.add_paragraph(
        \'减少加班时间\', style=\'List Number\'
    )
    
    # 保存文件
    doc2.save(\'word2.docx\')

     

  • 现在通过命令 python word_2.py 运行程序看下效果:
  •  

     

  • 图片和表格

    我们平时编辑文章时,插入图片和表格也是经常使用到的,那用 Python 该如何操作插入图片和表格?首先我们随便找了个图片,我这用了 Python 安装时的一张截图,文件名为python_install.png,然后在 word_2.py 文件中增加如下代码:

  • # word_2.py
    
    # 导入库
    from docx import Document
    from docx.shared import Pt
    from docx.shared import Inches
    from docx.oxml.ns import qn
    
    # 新建文档
    doc2 = Document()
    
    doc2.add_paragraph(\'哪个不是水果:\')
    
    # 增加无序列表
    doc2.add_paragraph(
        \'苹果\', style=\'List Bullet\'
    )
    doc2.add_paragraph(
        \'香蕉\', style=\'List Bullet\'
    )
    doc2.add_paragraph(
        \'馄炖\', style=\'List Bullet\'
    )
    
    doc2.add_paragraph(\'2020年度计划:\')
    # 增加有序列表
    doc2.add_paragraph(
        \'每周健身一天\', style=\'List Number\'
    )
    doc2.add_paragraph(
        \'学习50本书\', style=\'List Number\'
    )
    doc2.add_paragraph(
        \'减少加班时间\', style=\'List Number\'
    )
    
    doc2.add_heading(\'图片\',2)
    
    # 增加图像
    doc2.add_picture(\'python_install.png\', width=Inches(5.5))
    
    doc2.add_heading(\'表格\',2)
    
    # 增加表格,这是表格头
    table = doc2.add_table(rows=1, cols=3)
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = \'编号\'
    hdr_cells[1].text = \'姓名\'
    hdr_cells[2].text = \'职业\'
    
    # 这是表格数据
    records = (
        (1, \'张三\', \'电工\'),
        (2, \'张五\', \'老板\'),
        (3, \'马六\', \'IT\')
    )
    
    # 遍历数据并展示
    for id, name, work in records:
        row_cells = table.add_row().cells
        row_cells[0].text = str(id)
        row_cells[1].text = name
        row_cells[2].text = work
    
    # 手动增加分页
    doc2.add_page_break()
    
    # 保存文件
    doc2.save(\'word2.docx\')

     

  •  

     

  • 读取 Word 文件

    上面写了很多用 Python 创建空白 Word 文件格式化字体并保存到文件中,接下来我们再简单介绍下如何读取已有的 Word 文件,请看如下代码:

  • # word_3.py
    
    # 引入库
    from docx import Document
    
    # 打开文档1
    doc1 = Document(\'word1.docx\')
    
    # 读取每段内容
    pl = [ paragraph.text for paragraph in doc1.paragraphs]
    
    print(\'###### 输出word1文章内容\')
    # 输出读取到的内容
    for i in pl:
        print(i)
    
    
    # 打开文档2
    doc2 = Document(\'word2.docx\')
    
    print(\'\n###### 输出word2文章内容\')
    
    pl2 = [ paragraph.text for paragraph in doc2.paragraphs]
    
    # 输出读取到的内容
    for j in pl2:
        print(j)
    
    # 读取表格材料,并输出结果
    tables = [table for table in doc2.tables]
    for table in tables:
        for row in table.rows:
            for cell in row.cells:
                print (cell.text,end=\'  \')
            print()
        print(\'\n\')

     

  • 以上代码是将之前我们输出的两个文档内容都读取出来,当然这里只是打印到控制台,并没有做其他处理。现在我们来执行命令 python word_3.py 把代码执行看下结果:
  •  

     

分类:

技术点:

相关文章: