精华内容
下载资源
问答
  • mk-处方 根据带有数据的xlsx文件(用Go编写),基于模板制作docx文档
  • 新建 DOCX 文档,新建docx文档怎么制表源码
  • 新建 DOCX 文档.docx

    2021-09-19 20:23:14
    新建 DOCX 文档.docx
  • doc文档转docx文档自动批量处理,可以对文件夹中的文档进行批量处理
  • 此工程功能为doc/docx文档批量转换XML文档,附带源代码源代码。
  • 新建 DOCX 文档.zip

    2021-09-19 20:23:17
    新建 DOCX 文档.zip
  • 前言: 今天的工作中遇到一个没接触过的需求, 需求是这样的, 把数据库中的数据读出来, 填充到docx文件(docx文件里的内容不固定, 可能很多, 可能没有), 这个需求也是今天遇到的, 一开始是在看python-docx的官网, 希望...
    前言: 今天的工作中遇到一个没接触过的需求, 需求是这样的, 把数据库中的数据读出来, 填充到docx文件(docx文件里的内容不固定, 可能很多, 可能没有), 这个需求也是今天遇到的, 一开始是在看python-docx的官网, 希望能找到好的解决办法, 旁边一位前辈指让我用docxpl操作docx模板来达到目的, 说这个省事很多, 这里研究一下
    准备工作: pip install python-docx, pip install docxtpl(或者直接安装后者, 后者依赖前者, 会把前者也下载下来)
    1. 大致说一下思路, 这个实现的思想, 和前端的一些框架, Angularjs, Vue-----把模板中的标签, 替换成对象或者数组中的真实数据, 主要用到的是Python后端的模板渲染语言Jinja2, 因为现在都是前后端分离的项目, 像Jinja2这种强大的后端渲染语言用的人越来越少, 这里就被大神们用来操作docx文档
    # 这里用代码生成了一个简单的表格, 然后用wps加了一个表格样式, 手动加了表头, 表名...效果入下
    from docx import Document
    
    doc = Document('new.docx')
    tb = doc.add_table(rows=5, cols=5)
    doc.save('new.docx')
    

    在这里插入图片描述

    2. 准备一些数据
    obj = {
        'name': '张三',
        'age': 18,
        'high': 180,
        'weight': 90,
        'address': '安徽',
        'more': [
            {
                'name': '李四',
                'age': 20,
                'high': 190,
                'weight': 80,
                'address': '山东'
            },
            {
                'name': '王五',
                'age': 22,
                'high': 175,
                'weight': 79,
                'address': '河南'
            },
            {
                'name': '麻子',
                'age': 25,
                'high': 178,
                'weight': 70,
                'address': '广东'
            },
            {
                'name': '王二',
                'age': 22,
                'high': 182,
                'weight': 78,
                'address': '上海'
            },
        ]
    }
    
    from docxtpl import DocxTemplate
    
    tpl = DocxTemplate('new.docx')
    
    tpl.render(obj)  # 注意这个数据只能有一个, 数据内容可以复杂
    tpl.save('test.docx')
    
    3. 处理一下表格

    在这里插入图片描述

    4. 效果如下

    在这里插入图片描述

    5. 总结: 这里时间关系, 我只用到了操作表格部分语法, 还有其它丰富的字体, 颜色, 样式, 等等花里胡哨的东西, 暂时就不研究了, 有用到其它功能的小伙伴, github搜索python-docx-template, 里面有个tests包, 里面各种示例

    在这里插入图片描述
    不过不知道什么原因, github上面的这个地址由于网络的问题, 可能因为我是晚上搜的, 文件template文件打不开, 下载不了, 这里如果小伙伴们也和我一样看不了, 推荐去码云上面搜, 可以下载!

    展开全文
  • 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格。 3一个插入的文件对象。4 一个图片 这4个部分是我们在docx文档中最常见的几种格式。解析代码如下 import docx def docx_...

    首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以

    下面来看下如何解析docx文档:文档格式如下

    有3个部分组成 1 正文:text文档 2 一个表格。 3一个插入的文件对象。4 一个图片 这4个部分是我们在docx文档中最常见的几种格式。解析代码如下

    import docx

    def docx_try():
        doc=docx.Document(r'E:\py_prj\test.docx')
        for p in doc.paragraphs:
            print p.text
        for t in doc.tables:
            for r in t.rows:
                for c in r.cells:
                    print c.text

    E:\python2.7.11\python.exe E:/py_prj/test3.py

    Test文档

    名称

    作用

    Python

    解析数据

    C语言

    调用底层接口

    HTML

    网页数据

    首先是用docx.Document打开对应的文件目录。docx文件的结构比较复杂,分为三层,1、Docment对象表示整个文档;2、Docment包含了Paragraph对象的列表,Paragraph对象用来表示文档中的段落;3、一个Paragraph对象包含Run对象的列表。 因此p.text会打印出整个的文本文档。而用doc.tables来遍历所有的表格。并且对每个表格通过遍历行,列的方式来得到所有的内容。

    但是在运行结果中并没有找到我们插入的文件对象和图片,text.txt文档。这部分该如何解析呢。首先我们需要先来认识下docx文档的格式组成:

    docx是Microsoft Office2007之后版本使用的,用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

    docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

    docx 格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。它是保存在一个ZIP文件中,然后取扩展名为docx。将.docx 格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹,它包含了Word文档的大部分内容。而其中的document.xml文件则包含了文档的主要文本内容

     

    从上面的文档我们可以了解到docx文档实际上是由XML文档打包组成的。那么我们要得到其中所有的部分,可以用ZIP解压的方式来得到所有的部件。我们先试下看是否可以

    1 将docx文档改成ZIP的后缀

    2 解压文件

    解压之后得到如下几个文件

    点开word文件夹:有如下的文件夹。document.xml就是描述文本对象的文件

    其中embeddings文件中就是我们插入的文本对象text.txt. 是一个bin文件

    Media文件中就是存储的图片:

    我们通过手动的方式将插入的文本以及图片解析出来,那么通过代码也是同样可以解析的。代码如下。

    os.chdir(r'E:\py_prj')  #首先改变目录到文件的目录
    os.rename('test.docx','test.ZIP')  # 重命名为zip文件
    f=zipfile.ZipFile('test.zip','r')  #进行解压
    for file in f.namelist():
        f.extract(file)
    file=open(r'E:\py_prj\word\embeddings\oleObject1.bin','rb').read() #进入文件路径,读取二进制文件。
    for f in file:
        print f


    通过上面的方式,就可以将docx中插入的文件以及图片全部解析出来。具体docx的写的方式可以参考官方文档的介绍

     

    转载于:https://www.cnblogs.com/zhanghongfeng/p/7043412.html

    展开全文
  • python生成docx文档从模板。有数据,有模板,有代码,立可跑。花了作者半天时间。主要是比较疑惑颇费工夫。所以需要5积分。得罪得罪。
  • python-docx插件可以方便的操作docx文档,注意不是doc...下面代码是合并纯文本(不含图片)的docx文档,暂只列出了合并两个文档的代码,可稍加修改做成合并无数个的功能。 from docx import Document import re ...

    python-docx插件可以方便的操作docx文档,注意不是doc格式,这两种格式本质上是完全不一样的东西,doc需要使用win32com来操作,速度比较慢,python-docx的速度相比之下就太快了。

    下面代码是合并纯文本(不含图片)的docx文档,暂只列出了合并两个文档的代码,可稍加修改做成合并无数个的功能。

    from docx import Document
    import re
    
    files = "企业计划书范文(创办你的企业).docx"
    
    #合并多个docx文件
    def combine_word_documents(files):
        # 新建一空文件,用来保存合并后的内容
        merged_document = Document("template/通用.docx")
        #读入一个文件
        sub_doc = Document(files)
        #循环写入element,适合纯文本
        for body in sub_doc._element.body:
            merged_document._element.body.append(body)
        #保存新文件
        merged_document.save("test/test.docx")
    
    combine_word_documents(files)

    如果哪位朋友有docx文的需求可以留消息给我,试着研究一下。

    展开全文
  • android使用POI操作word docx文档,根据 【***】这种标识规则,替换掉docx文档中的内容
  • Java读写docx文档所需jar包,通过POI方式 读取docx文档,相关代码在博客中有,可以读取文档内容并替换文档中需要被替换的内容。
  • python操作docx文档

    万次阅读 热门讨论 2017-09-05 19:48:00
    在2017年暑假绿盟实习期间,部门做的一个项目需要用到docx格式的word文档模板操作,现在有如下记录:  关于python操作docx格式文档,我用到了两个python包,一个便是>python-docx包,另一个便是python-docx-...


    在2017年暑假绿盟实习期间,部门做的一个项目需要用到docx格式的word文档模板操作,现在有如下记录:

         关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很出名的一个工具"pandoc,下面我会对他们各自进行介绍。

    1.     首先便是python-docx包,这是一个很强大的包,可以用来创建docx文档,包含段落、分页符、表格、图片、标题、样式等几乎所有的word文档中能常用的功能都包含了,这个包的主要功能便是用来创建文档,相对来说用来修改功能不是很强大,关于文档请查看他的"官网;

    2. 再然后便是python-docx-template这个包了,他可以用来对docx文档进行修改,诸如对文档中的 文本、图片、富文本、等几乎所有存在与文档中的他都能替换,而且他操作起来就如同很多web框架中的模板语言一样,因为他是和jinjia2模板语言结合使用的,所以最好希望使用之前对模板语言有一定了解;

    3. 关于pandoc,这个包在许多需要进行文本转换的地方用处很强大,他可以把许多如今存在的文档格式转换问另一种文档格式,如html、markdown、docbook、latex、docx等转换为xml、latex、markdown、pdf,总之很强大,这是官网,有兴趣的可以去了解下。

    下面便会相应介绍他们各自的大概的用法。还是按照上面的顺序进行介绍,大笑

    • 关于python-docx这个包我觉得最好还是引用他官网的一段代码解释最为合适了,因为这里面基本情况都被包含了,

    from docx import Document
    from docx.shared import Inches
    
    document = Document()  # 首先这是包的主要接口,这应该是利用的设计模式的一种,用来创建docx文档,里面也可以包含文档路径(d:\\2.docx)
    
    document.add_heading('Document Title', 0)  # 这里是给文档添加一个标题,0表示 样式为title,1则为忽略,其他则是Heading{level},具体可以去官网查;
    
    p = document.add_paragraph('A plain paragraph having some ') # 这里是添加一个段落
    p.add_run('bold').bold = True   # 这里是在这个段落p里文字some后面添加bold字符
    p.add_run(' and some ')
    p.add_run('italic.').italic = True
    
    document.add_heading('Heading, level 1', level=1)   # 这里是添加标题1
    document.add_paragraph('Intense quote', style='IntenseQuote') # 这里是添加段落,style后面则是样式
    
    document.add_paragraph(
        'first item in unordered list', style='ListBullet'    # 添加段落,样式为unordered list类型
    )
    document.add_paragraph(
        'first item in ordered list', style='ListNumber'    # 添加段落,样式为ordered list数字类型
    )
    
    document.add_picture('monty-truth.png', width=Inches(1.25))  # 添加图片
    
    table = document.add_table(rows=1, cols=3)   # 添加一个表格,每行三列
    hdr_cells = table.rows[0].cells   # 表格第一行的所含有的所有列数
    hdr_cells[0].text = 'Qty'    # 第一行的第一列,给这行里面添加文字
    hdr_cells[1].text = 'Id'
    hdr_cells[2].text = 'Desc'
    for item in recordset:
        row_cells = table.add_row().cells   # 这是在这个表格第一行 (称作最后一行更好) 下面再添加新的一行
        row_cells[0].text = str(item.qty)
        row_cells[1].text = str(item.id)
        row_cells[2].text = item.desc
     
    document.add_page_break()    # 添加分页符
    
    document.save('demo.docx')  # 保存这个文档

    具体样式请看:

    关于更多细节希望大家还是去他的官网python-docx;看,介绍的还是很详细

    • 然后便是python-docx-template包了,他用起来就向python中的模板语言一样,有上下文,有模板,然后进行变量的替换

    关于python-docx-template,他的官网名称便是“像jinjia2一样来操作docx文档”,因此这个包对于用来进行文档修改时很强大的下面是一个简单例子:

    from docxtpl import DocxTemplate
    
    doc = DocxTemplate("1.docx")  # 对要操作的docx文档进行初始化
    context = { 'company_name' : "World company" }   # company_name 是存在于1.docx文档里面的变量,就像这样{{company_name}},直接放在1.docx文件的明确位置就行
    doc.render(context)   # 这里是有jinjia2的模板语言进行变量的替换,然后便可以在1.docx文档里面看到{{company_name}}变成了World company
    doc.save("generated_doc.docx")   # 保存
    
    当然,这个包的功能远远不止上面例子中的一些,可以包含图片
    
    myimage = InlineImage(doc,'test_files/python_logo.png',width=Mm(20)) # tpl便是上面例子中的doc对象
    
    也可以包含另一个docx文档,
    sub = doc.new_subdoc()
    sub.subdocx = Document('d:\\2.docx')
    doc.render({'sub': sub})
    这里操作之后便可以把2.docx文件里面的内容直接插入到doc对象(也就是1.docx)文档中{{sub}}这个变量处,被替换为2.docx中的,基本上用到的都是这两个部分,

    关于更多的特性,可以访问官网的example,里面涵盖了几乎所有的特性,地址是https://github.com/elapouya/python-docx-template/tree/master/tests

    • 最后便是pandoc了,我在这次用到的功能主要是,用来把html文件直接转换为markdow格式文件,然后再转换为txt文件,最后将txt文件内容和格式一同插入到docx文档中,当然,也可以直接把html文件转换为docx文件,格式基本一致


    这是用到的命令,而由于使用pandoc是在控制台下cmd或者shell使用的,因此要用到python的另一个包subprocess

    import subprocess
    subprocess.call('pandoc --latex-engine=xelatex temp.html -o temp.text', cwd='d:\\python', shell=True)
    subprocess.call('pandoc --latex-engine=xelatex temp.text -o t1.text', cwd='d:\\python', shell=True)
    
    或者
    subprocess.call('pandoc temp.html -o temp.docx', cwd='d:\\python', shell=True)
    首先里面的cwd参数设置后,会把这个命令执行环境调到cwd所设置的参数路径处,就如同执行命令前,如同先执行了 cd d:\\python命令一样,shell=True相当于新开了一个shell或者cmd控制台,而关于更多例子,可以去官网的在线转换器 https://pandoc.org/try/ 或者官网的例子 https://pandoc.org/demos.html

    • 还有一个问题,若使用过程中,出现打开docx文档报错,那么极有可能便是初始化模板格式错误,因此需要替换一个新的初始化模板

    好了,主要便是这些了,谢谢查看!吐舌头

    展开全文
  • 最近公司的需求:替换docx文档中的指定文字(文章主题,时间等),生成新的docx文档,再把文档转换成pdf。目的是在pdf中签名使用
  • wagtail2docx:wagtail插件可将页面转换为Microsoft Word docx文档
  • python_docx制作word文档

    千次阅读 2018-11-21 16:37:00
    python_docx制作word文档 一、docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档文档中的段落、文本、字体等都看做对象,对对象...
  • 方正阿帕比CEBX格式的文档如何转换为PDF格式文档、DOCX文档?   简介:  PDF、Doc、Docx格式的文档使用的非常普遍,金山WPS可以直接打开PDF和Doc、Docx文档,使用也很方便。  CEB、CEBX格式是方正阿帕比的...
  • 顺序遍历docx文档

    2017-12-27 14:16:22
    顺序遍历doc文档的核心代码如下:from docx import Document from docx.document import Document as _Document from docx.oxml.text.paragraph import CT_P from docx.oxml.table import CT_Tbl from docx.table ...
  • DOCX4J 解析DOCX文档字体格式

    千次阅读 2017-07-28 17:37:22
    一、DOCX文档格式 docx4j只能解析docx格式的word文档,这种文档其实是一个压缩文件,加压后会有如下图所示的多个文件,文档中字体格式主要包含在document.xml和styles.xml文件中,theme文件夹可能也有,本文没有分析...
  • Python获取docx文档里的批注

    千次阅读 2019-05-26 21:19:12
    但是有些隐含的信息Python-docx库好像无法读取,比如docx文档里的批注 下面介绍一种用python获取docx文档批注的方法 首先区分doc文件和docx文件 以前Office产品中Word用.doc文件格式,这种二进制格式很难与其他...
  • docx文档中功能齐全的groovy模板scriptlet
  • Python读取docx文档的内容

    千次阅读 2018-10-29 23:34:07
    Python读取docx文档的内容 下载好解析docx文档的包,Python-docx是专门针对于word文档的一个模块。 1、读取文档内容 from docx import Document doc=Document("C:\\Users\\Administrator\\Desktop\\...
  • 合并DOCX文档

    千次阅读 2016-12-15 10:56:28
    只能合并DOCX噢,不能合并DOC,强制修改文件名后缀也是不可以的哟,所以又花了好久找上一篇文章的方法。 废话不多说,上代码,很简洁,用DOC4J。 用到的jar包有docx4j-3.3.1.jar和commons-io-2.2.jar public ...
  • freemarker生成doc文档和生成docx文档

    千次阅读 2018-09-30 17:48:22
    注意点:使用的文档模板为office word生成的,不要用wps ...1.生成xml文档模板,创建一个docx文件然后将后缀名改为zip(其实docx文档实际上是一个压缩文件,是可以解压出来的) 将document.xml解压出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,198
精华内容 45,679
关键字:

如何制作docx文档