• Python [1] (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。 Python是纯粹的自由软件...
  • 我们介绍几种使用python创建word文档的方法,分别使用jinja2、docx、win32com 一、使用jinja2模板创建word文档(推荐) 使用这种方法,我们需要一个xml模板,之后将需要插入的数据通过变量传递,就能出色的达到...

    我们介绍几种使用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, 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文档

    2018-08-14 10:25:54
    一、安装python-docx 模块 1、我的环境是(win7 64位 + python 3.6 + pip + pyCharm) 下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-docx 2、下载该文件,然后进入 文件下载目录,按住 shift...

    一、安装python-docx 模块

    1、我的环境是(win7 64位 + python 3.6 + pip + pyCharm)

    下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-docx

    2、下载该文件,然后进入 文件下载目录,按住 shift + 右键 选择 在此处打开命令窗口,输入命令:pip install python_docx-0.8.6-py2.py3-none-any.whl

     

    二、对word的简单操作

    这里演示一些基本操作,详情请查看官方文档:

    http://python-docx.readthedocs.io/en/latest/

    1、创建文档对象

    打开已经存在的文档

    创建一个新的文档

    2、读取word文档内容

    from docx import *
    
    # 创建一个已存在的 word 文档的对象
    file = Document('test.docx')
    
    # 读取每个段落的内容并输出
    for it in file.paragraphs:
        print( it.text )
    
    # 读取表格中的内容并输出
    for it in file.tables:
        for row in it.rows:
            for cell in row.cells:
                print( cell.text )

    3、向文档添加内容

    #coding: utf-8
    from docx import *
    from docx.shared import Inches
    
    # 创建一个已存在的 word 文档的对象
    file = Document()
    
    # 添加标题,标题级别设置为2级
    file.add_heading('添加标题',level=2)
    
    # 添加段落
    paragraph = file.add_paragraph('这是新增的段落')
    paragraph.add_run('加粗').bold = True
    paragraph.add_run('这是斜体').italic = True
    
    # 添加表格
    table = file.add_table(rows=2, cols=2)
    # 添加表格内容,也可用: table.rows[0].cells[0].text = "第一行第一列"
    #               或者用: table.cell(0,0).text = "cell_00"
    for i in range(2):
        for j in range(2):
            cell = table.cell(i, j)
            cell.text = "第"+str(i+1) +"行第"+str(j+1) +"列"
    
    # 添加图片,图片是当前文件夹下的 img.png 图片
    file.add_picture('img.png',width=Inches(4.0))
    
    # 保存新创建的 word 文档
    file.save('testDoc.docx')

    效果图:

    展开全文
  • 使用Pythonword文档进行操作 一、安装Python-docx Python-docx是专门针对于word文档的一个模块,只能读取docx 不能读取doc文件。说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ...

    使用Python对word文档进行操作

    一、安装Python-docx

    Python-docx是专门针对于word文档的一个模块,只能读取docx 不能读取doc文件。说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ最大的作用是可以去聊天,说话。 在这里python-docx就相当于这里的qq 它主要的功能是对docx文件进行操作,管理等.(个人理解,非专业!)

    1.1、安装Python-docx

    1.1.1、使用虚拟环境安装python-docx

    pip install python-docx # 安装命令
    
    

    安装结束后,在此虚拟环境中运行Jupyter notebook

    jupyter notebook
    
    

    1.1.2、切换工作目录(使用 %cd命令)

    %cd F:python_test1Python_office # 进入目录
    %pwd # 查看当前的工作目录
    >>>'F:\python_test1\Python_office' # 输出结果
    在学习过程中有什么不懂得可以加我的
    python学习交流扣扣qun,784758214
    群里有不错的学习视频教程、开发工具与电子书籍。
    与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
    

    二、对word文档进行编辑

    在对word文档编辑之前需要导入Document模块如下:

    from docx import Document
    Doc = Document() 
    解释:from 从 docx这个文件中,导入一个叫Document的一个东西,Document是文档的意思,所以它是对word文档进行操作的一个玩意. 在下面Doc = Document() 可以理解为 Document就是一个类,这个操作也就是实例化的过程,生成对象为:Doc
    
    

    那Document实例化了一个Object叫Doc 那么Doc肯定会有很多的方法,这些方法就是对word文档进行操作的方法如下:

    Doc.add_heading("Python是什么东西???")
    <docx.text.paragraph.Paragraph at 0x28033582e48>
    # Doc.add_heading 意思是添加一个叫做heading的一个东西在这里heading指的是标题的意思,也就是添加一个标题叫做python是什么东西???运行完成后它会生成一个对象.
    
    

    2.1、添加一个段落(paragraph)

    Doc.add_paragraph("Python是一种面向对象的编程语言~~~") # 在这里paragraph指的就是一个段落的意思
    <docx.text.paragraph.Paragraph at 0x280335a17b8>
    
    

    2.2、添加多个段落(paragraph)

    Doc.add_paragraph("Python ")
    Doc.add_paragraph("Python 对word进行操作")
    
    

    2.3、如何查看word文档?

    写完之后我们需要查看首先需要保存 如下:

    Doc.save("Python_word.docx")
    # save:保存 为名字叫:Python_word.docx 的文件
    
    

    三、如何添加一级标题,二级标题,三级标题…?

    3.1、添加一级标题

    Doc = Document()
    Doc.add_heading("这是一级标题",level=1)
    Doc.add_heading("这是二级标题",level=2)
    Doc.add_heading("这是三级标题",level=3)
    Doc.add_heading("这是四级标题",level=4)
    Doc.save("标题.docx")
    
    

    打开效果如下:

    四、如何添加一个副级标题?

    Doc.add_heading("这是一个一级标题",level=1)
    Doc.add_paragraph("这是一个副标题","Subtitle")
    Doc.save("副标题.docx")
    
    

    五、查看已有的样式

    5.1、查看paragraph有哪些样式

    在学习过程中有什么不懂得可以加我的
    python学习交流扣扣qun,784758214
    群里有不错的学习视频教程、开发工具与电子书籍。
    与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
    from docx.enum.style import WD_STYLE_TYPE
    for i in Doc.styles:
     if i.type == WD_STYLE_TYPE.PARAGRAPH:
     print(i.name)
    >>>
    Normal
    Heading 1
    Heading 2
    Heading 3
    Heading 4
    Heading 5
    Heading 6
    Heading 7
    Heading 8
    Heading 9
    No Spacing
    Title
    Subtitle
    List Paragraph
    Body Text
    Body Text 2
    Body Text 3
    List
    List 2
    List 3
    List Bullet
    List Bullet 2
    List Bullet 3
    List Number
    List Number 2
    List Number 3
    List Continue
    List Continue 2
    List Continue 3
    macro
    Quote
    Caption
    Intense Quote
    TOC Heading
    
    

    5.2、查看文字有哪些样式

    from docx.enum.style import WD_STYLE_TYPE
    for i in Doc.styles:
     if i.type == WD_STYLE_TYPE.CHARACTER:
     print(i.name)
    >>>
    Default Paragraph Font
    Heading 1 Char
    Heading 2 Char
    Heading 3 Char
    Title Char
    Subtitle Char
    Body Text Char
    Body Text 2 Char
    Body Text 3 Char
    Macro Text Char
    Quote Char
    Heading 4 Char
    Heading 5 Char
    Heading 6 Char
    Heading 7 Char
    Heading 8 Char
    Heading 9 Char
    Strong
    Emphasis
    Intense Quote Char
    Subtle Emphasis
    Intense Emphasis
    Subtle Reference
    Intense Reference
    Book Title
    
    

    案例:

    from docx import Document
    %cd D:YanZan_python2018word
    Docx = Document()
    Docx.add_heading("这是一个一级标题",level=1)
    Docx.add_paragraph("这是一个副级标题","Title")
    A = Docx.add_paragraph("My name is aaa")
    A.add_run("我学习的很快乐,啊哈哈哈哈哈,非常好 Good!!!")
    Docx.add_heading("这是一个二级标题",level=2)
    A = Docx.add_paragraph("这个是二级标题的内容呀")
    B = A.add_run("二级标题里面的正文 继续添加!!!!!!!")
    B.font.bold = True # 同时我要对这些正文进行加粗~~~~
    B.font.size = (20)
    Docx.add_heading("我爱学习Python以下就是python的logo呀",level=3)
    Docx.add_picture("1.png")
    Docx.add_table(rows=5, cols=5)
    Docx.save("Python.docx")
    
    

    如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的。从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天分享一些学习的方法和需要注意的小细节,技术经验分享!点击加入我们的 python学习者聚集地

    展开全文
  • 1.创建新的word文档 import docx doc = docx.Document() 如果是要打开文件,则需要在括号中写如文件名 2.添加标题 doc.add_heading(&amp;quot;测试文件&amp;quot;,0) doc.add_heading(“标题...

    前提需求:
    需要提前使用pip安装python-docx,本次演示使用python版本为3.7.2。

    pip3 install python-docx
    

    1.创建新的word文档

    import docx
    doc = docx.Document()
    

    如果是要打开文件,则需要在括号中写如文件名

    2.添加标题

    doc.add_heading("测试文件",0)
    

    doc.add_heading(“标题名称”,样式)

    3.添加段落

    doc.add_paragraph("段落内容")
    

    doc.add_paragraph(“段落的内容”)

    4.插入段落

    doc.paragraphs[2].insert_paragraph_before("内容")
    

    在指定段落前 插入新的段落

    5.添加run1的内容

    doc.paragraphs[1].add_run("段落的run值")
    

    个人理解认为run值类似于段落中的第几句。

    6.添加图片

    doc.add_picture("1.jpg")
    

    doc.add_picture(“图片的名称”)

    7.查看内容

    #查看段落的内容
    print (doc.paragraphs[0].text)
    #查看段落1的run1值
    print (doc.paragraphs[1].runs[1].text)
    #查看标题的名称
    print (doc.heading)
    

    8.保存文件

    doc.save("1.docx")
    

    doc.save(“保存文件名”)

    代码展示

    import docx
    doc = docx.Document()
    doc.add_heading("测试文件",0)
    doc.add_paragraph("段落内容")
    doc.paragraphs[2].insert_paragraph_before("内容")
    doc.paragraphs[1].add_run("段落的run值")
    doc.add_picture("1.jpg")
    #查看段落的内容
    print (doc.paragraphs[0].text)
    #查看段落1的run1值
    print (doc.paragraphs[1].runs[1].text)
    #查看标题的名称
    print (doc.heading)
    
    展开全文
  • 工作中经常要处理大量的word文档,大部分内容都很简单,比如说做一个汇总表,从发来的word文档里提取名字、联系方式、地址等信息,提取完之后还需要用Excel做汇总,对于十几份的文档尚好,但对于成百份,甚至上千份...
    工作中经常要处理大量的word文档,大部分内容都很简单,比如说做一个汇总表,从发来的word文档里提取名字、联系方式、地址等信息,提取完之后还需要用Excel做汇总,对于十几份的文档尚好,但对于成百份,甚至上千份的word文档,即便只是基本的复制粘贴,这个工作量也实在是太大。
    于是,想想能不能自己写一个脚本,能自动的提取word文档里的主要信息,并自动写入Excel文档。
    
    首选语言便是Python,查询知主要有以下几种方法:
    1.xlrd和xlwt库(在命令行下输入pip install xlrd/xlwt安装)
    2.win32
    
    首先,xlrd和xlwt只支持doc和xls文件格式,但想到docx和xlsx已经全面普及,所以直接否决掉,那么第二种方法则是直接调用offic的API进行操作,十分强大,因为在offic上能完成的操作,都能通过win32完成,所以我们选择使用win32。
    这一部分,我们先来获取报名表的信息,报名表word打开之后是这样子的:
    

    这里写图片描述

    我们需要提取其中的姓名、性别、民族、学校、学历、专业、年级、政治面貌等个人信息
    很明显,所有的信息都在一张table里,于是便可以很方便的运用word里的API提取信息:
    代码如下:
    
    #coding:utf-8
    
    import os
    import win32com
    from win32com.client import Dispatch, constants
    from docx import Document
    
    def parse_docx(f):
      """读取docx,返回姓名和行业
      """
      d = Document(f)
      t = d.tables[0]
      t_next=d.tables[1]
      #title= t.cell(0,1).text//比如说标题在表格中位于(0,1)
      name = t.cell(1,1).text   #1
      Gender = t.cell(1,3).text #1
      Race = t.cell(1,5).text   #1
      School=t.cell(2,1).text   #1
      Edu_back=t.cell(2,4).text #1
      Major=t.cell(3,1).text    #1
      Grade=t.cell(3,4).text    #1
      Poli_Status=t.cell(4,1).text#1
      Place=t.cell(4,3).text    #15
      ID_card=t.cell(5,1).text  #1
      Date_birth=t.cell(5,4).text#1
      Telephone=t.cell(6,1).text#1
      E_mail=t.cell(6,4).text   #1
      QQ=t.cell(7,1).text       #1
      Address=t.cell(7,4).text  #1
    #  Other=t_next.cell(1,1).text
      print(name, Gender,Race,School,Edu_back,Major,Grade,Poli_Status,Place,Date_birth,Telephone,E_mail,QQ,Address,end='\n ')
    
    
    ''' 上述函数主要实现文件的读取 '''
    if __name__ == "__main__":
      w = win32com.client.Dispatch('Word.Application')
    
      # 遍历文件
      PATH = "E:\wordtest" # windows文件路径
      doc_files = os.listdir(PATH)
      for doc in doc_files:
        if os.path.splitext(doc)[1] == '.docx':
          try:
            parse_docx(PATH+'\\'+doc)
          except Exception as e:
            print(e) 

    程序的代码看起来十分的简单,我们不作多解释,直接看结果,我们采用的IDE为PyCharm
    结果

    从word文档提取信息就是这么简单,接下来一讲,我们将会将读取的信息写入一个已经存在的Excel表格,方便我们查看和管理数据。

    展开全文
  • 一,简介上一篇已经介绍了python-docx模块的安装和导入,本篇直接介绍如何创建并写入word文档,需要注意的是:创建word并写入之后,操作的都是内存中的对象,最后需要保存到文件,才能看到真实的文件。二,代码演示...
  • 一,简介Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。二,相关概念...
  • Python写入word文档

    2019-09-25 20:21:31
    file=docx.Document()#创建内存中的word文档对象 file.add_paragraph("窗前明月光")#写入若干段落 file.add_paragraph("疑是地上霜") file.add_paragraph("举头望明月") file.add_paragraph("低头思故乡") file.save...
  • python抓取处理word文档

    2019-09-23 09:46:12
    其实pythonword文档的支持不够。 为读取docx内容,可以使用以下方法: (1)利用urlopen抓取远程word docx文件; (2)将其转换为内存字节流; (3)解压缩(docx是压缩后文件); (4)将解压后文件作为xml读取 ...
  • 当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,...注:本库仅支持生成Word2007以后版本的文档类型,即扩展名为.doc...
  • python读取word文档并作简单的文档筛选 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们...
  • 最近想统计word文档中的一些信息,人工统计的话。。。三天三夜吧 python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.readthedocs.io/en/latest/index.html (v...
  • python调用word接口主要用到的模板为python-...使用python新建一个word文档,操作就像文档里介绍的那样: 1 from docx import Document 2 from docx.shared import Inches 3 4 document = Document() 5 6...
  • python 生成word文档

    2017-12-19 19:37:18
    每月1次的测试费用报销,需要做一个文档。干脆花点时间写个程序吧。...from docx import Documentdef new_doc(fee_data,doc_path,fee):#新建一个word文档,写入汇总表的数据 document = Document() p_total
  • Python处理Word文档(.doc/.docx)——批量获取文档标题并以标题重命名文件 由于工作需要处理一批.doc文档,并且需要核对每个文档的标题,以标题重命名文件,之后将word文档批量转换成pdf。人工完成这些内容再文档...
  • 最近在开发一个答题类的小程序,到了录入试题进行测试的时候了,发现一个问题,试题几乎都是word文档格式的,每份有100题左右,而且可能有几十份。 word文档是没有固定格式的,想批量录入关系型数据库mysql,必须先...
  • word文档中出现的表格通常不利于查找,往往需要转换为EXCEL文档中才方便进行操作,本文提供的python代码能够将word文档中出现的所有表格格式的数据提取到CSV文件中。 初始的Word文档: 导出后的CSV文件: 目前...
  • 直接在命令行执行pip install python-docx 示例代码如下: import docx from docx import Document #导入库 path = &quot;E:\\python_data\\1234.docx&quot; #文件路径 document = Document(path) #...
  • 这是一个很强大的包,可以用来创建docx文档,包含段落、分页符、表格、图片、标题、样式等几乎所有的word文档中能常用的功能都包含了,这个包的主要功能便是用来创建文档,相对来说用来修改功能不是很强大,官网文档...
1 2 3 4 5 ... 20
收藏数 35,455
精华内容 14,182