精华内容
下载资源
问答
  • 最近在工作中一直接触统计月报这块的文档,之前一直是把结果打印在Jupyter lab上,然后通过复制粘贴的方式放入Word文档里,但是最近统计月报的数量越来越,作者连复制粘贴也懒得想做了 ,遂学习了python-docx的...

    简介

    最近在工作中一直接触到统计月报这块的文档,之前一直是把结果打印在Jupyter lab上,然后通过复制粘贴的方式放入Word文档里,但是最近统计月报的数量越来越多作者连复制粘贴也懒得想做了 ,遂学习了python-docx的使用,将所有结果直接写入word,最后写了这个文章,希望也能帮助到大家解放自己的双手~
    完整Github码源地址,有帮助到大家的话欢迎点一下星星:Python-docx_Sample

    运行环境与配置

    环境 信息
    系统 WIN10
    软件 Jupyter Lab 2.2.6
    语言 Python 3.8.5
    python-docx 0.8.10
    完整Github码源 Python-docx_Sample

    成果物展示

    模板word

    WORD模板2
    WORD模板2

    输出word

    输出Word文档

    python-docx库安装

    为什么要单独把库的安装单独列一块,因为作者一开始没注意名称,直接pip install docx,结果发现根本没法使用,最后查了半天才发现作者像个智障一样 下了一个“同名”的库,原来这个库写作python-docx用作docx
    什么叫写作和用作,请大家分别看安装语句和引用语句就能理解了。
    安装语句

    pip install python-docx
    

    引用语句

    from docx import Document
    

    Python-docx 的使用技巧

    关于文档编写和样式

    在作者这里,其实十分不推荐大家直接用python-docx直接生成新的Word文档,因为这样不仅会增加开发的难度(例如:页眉页脚、创建样式创建样式创建样式),如果文档需要修改,代码的修改会更加困难!因此作者推荐的方式是,先手动制作一份Word模板,再使用python-docx通过修改内容的方式去编写Word文档。

    设置页眉页脚

    作者设置页眉页脚的方法是在模板里就提前设置好,原因很简单,就像普通编辑word文档一样,在使用 python-docx 修改和插入段落、图片和表格的时候是不会影响页眉页脚的。

    页眉示例:
    页眉设置
    页脚示例:
    设置页脚

    代码展示

    0 库引用

    from docx import Document,shared
    import random #这里只是为生成一些数据用,使用时记得去掉哦
    

    1 辅助程序

    由于 python-docx 返回的的表格是一个特殊的 table 格式,所以读取和写入都需要一定的步骤才能完成 (和pandas比起来真是差远了) 。因此作者特地配备了一个自己写的_docx类来辅助表格的读写(包括一个pandas数据的转换功能),在这里也开放给大家供大家方便使用,使用的时候可以根据需要对 table_writer 模块进行调整。

    class _docx:
        def table_reader(table):
            table_list = []
            for i, row in enumerate(table.rows):   # 读每行
                row_content = []
                for cell in row.cells:  # 读一行中的所有单元格
                    c = cell.text
                    if '\n' in c: c=c.replace('\n','') # 删除换行符
                    row_content.append(c)
                table_list.append(row_content)
            return  table_list
        def table_filler(table,table_list):
            for i, row in enumerate(table.rows):    # 读每行
                if i==0: continue                   # 跳过首行
                for j,cell in enumerate(row.cells): # 读一行中的所有单元格
                    par = cell.paragraphs[0]
                    par.text = str(table_list[i][j]) # 写入内容
                    par.style.name = '表内容'        # 添加样式
        def table_transfer(pd_df):
            array = np.array(pd_df.reset_index())
            array_list = array.tolist()
            return array_list
        def table_writer(table,pd_df):
            table_data = _docx.table_transfer(pd_df)
            table_list = _docx.table_reader(table)
            table_list[1:] = table_data
            _docx.table_filler(table,table_list)
    

    2 读取模板与查看模板内容

    2.1 读取模板

    filename = 'Sample_Template.docx'
    document = Document(filename)
    

    2.2 查看模板内容

    在配置内容的时候往往需要对比,因此打印段落号和内容能很好的协助读写内容。
    此外,document.paragraphs 无法读取到图片和表格,如果需要查看图片和表格,可以使用 document.tables) 和document.inline_shapes`。

    段落内容

    for i,parag in enumerate(document.paragraphs):
        print('段落{}'.format(i),parag.text)
    

    打印结果:
    模板段落打印

    表格内容

    table = document.tables[0]
    table_list = _docx.table_reader(table)
    table_list
    

    打印结果:
    模板表格打印

    模板样式查询

    查询了模板里的样式后,在添加段落、表格、图片的时候就可以通过给.style.name赋值直接使用已有的样式,十分方便实用!
    查询方式:

    for s in document.styles:
        print(s.type,s.name)
    

    打印结果:
    模板样式查询

    3 写入内容

    i = 8                                                     # 总标题行
    document.paragraphs[i].text,i = '程序员种菜指南',i+1       # 写入内容,i=i+1
    i += 1                                                    # 再加一行到标题一行
    
    document.paragraphs[i].text,i = '一、程序员为什么种菜',i+1  # 写入内容,i=i+1
    document.paragraphs[i].text,i = '1.1、种菜的好处',i+1      # 写入内容,i=i+1
    content = '种菜可以吃。'
    document.paragraphs[i].text,i = content,i+1               # 写入内容,i=i+1
    document.paragraphs[i].text,i = '1.2、程序员种菜的好处',i+1 # 写入内容,i=i+1
    content = '程序员可以批量种菜。'
    document.paragraphs[i].text,i = content,i+1               # 写入内容,i=i+1
    
    document.paragraphs[i].text,i = '二、种菜流程',i+1         # 写入内容,i=i+1
    document.paragraphs[i].text,i = '2.1、种菜流程图',i+1      # 写入内容,i=i+1
    content = '程序员种菜主要流程是播种、施肥、浇水和收割。'
    document.paragraphs[i].text,i = content,i+1               # 写入内容,i=i+1
    
    picture = '程序员种菜指南.png'
    document.paragraphs[i].add_run().add_picture(picture,height=shared.Cm(6),width=shared.Cm(10)) # 在段落内插入图片
    i += 1
    
    document.paragraphs[i].text,i = '2.2、种菜成果表',i+1      # 写入内容,i=i+1
    
    for row in range(1,len(table_list)):
        for col in range(1,len(table_list[row])):
            table_list[row][col] = random.randint(0,10)       # 程序员'收集'并填写结果
    _docx.table_filler(table,table_list)                      # 将结果写入表格
    

    4 保存文件

    document.save('Sample_Result.docx')
    

    总结和心得

    • 设置和调整模板
    • 设置和调整模板
    • 设置和调整模板

    重要的话要说三次!只要把模板Word文档的页眉、页脚、样式设置好,必要的时候可以多设置几个样式。那么剩下的只需要在读取之后往对应的段落或者表格塞东西就好了,真的很方便哦!!

    展开全文
  • 最近写文档用到word,复制代码的时候word文档里面会出现很问题,这里记录一下: 1.空行和间距大的问题 文档里面间距大,一页就显示了10几行代码,显然是不好看的,本来我们可以使用“格式-段落”去修改,但是这仅...

    最近写文档用到word,复制代码的时候word文档里面会出现很多问题,这里记录一下:
    1.空行和间距大的问题
    文档里面间距大,一页就显示了10几行代码,显然是不好看的,本来我们可以使用“格式-段落”去修改,但是这仅限于一次一次地改,而我们复制代码的时候,一个源码文件,少的几十行,几百行,多的几千行,尤其是代码里面一个括号就是一段,一个类,一个函数就是好几段,要是一段一段的改,那得改到何年何月呢?所以我们需要技巧,技巧,技巧。
    在复制代码的时候,我们肯定是有格式的,譬如标题格式,正文,标题1,2,3等等,那么就可以通过修改这个通用格式来批量修改我们的整个文档了。
    下面的图片说明了过程了,不用选中正文,直接在编辑的时候点一下,正文的样式,然后修改,然后更新,就可以更新到所有的同类样式之上了。这里我原本是用了正文的样式,但是后来发现有无间隔正文样式,于是又开始用无间隔样式,之后发现上面的文本也需要修改为无间隔样式,那么怎么办呢?这里我就通过修改正文样式也变成无间隔样式就好了,最后更新一下,所有的正文就都是无间隔样式了。
    在这里插入图片描述
    在这里插入图片描述
    2.复制代码的时候出现行号问题

    在我复制代码的时候,从QtCreator上复制到Word文档中,因为我需要用到标题去管理源码,所以使用了排序标记,结果就出现了复制时会带上行号的现象,有两个解决办法,第一是你可以从QtCreator中复制代码到一个纯文本文件中,然后再从文本文件复制到Word,这样就可以没有行号了。第二,你可以取消行号,如下图所示,不过记得需要在标题下多按一下回车键,看到没有排序标记后才开始粘贴,注意不要让排序影响到复制效果。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 文件排序 --sort=WORDWORD而不是名称排序 WORD可能为: 1. none(同选项 -U):不要排序,按目录顺序列出条目 2. size(同选项 -S):按文件大小排序 3. time(同选项-t):按时间排序 4. version...

    1)文件的排序

    --sort=WORD

        按WORD而不是名称排序

        WORD可能为:

         1. none(同选项 -U):不要排序,按目录顺序列出条目

         2. size(同选项 -S):按文件大小排序

         3. time(同选项-t):按时间排序

         4. version(同选项-v):根据版本号排序

         5. extension(同选项-X):按扩展名的字母顺序排序

     

    2)查看目录所占容量

    du [-ahcs] 文件或目录名

    选项:

           -a:将文件的容量页显示出来,而不是仅仅列出目录

           -h:以较易阅读的单位显示容量(经常用)

           -c:最后列出总量

           -s:只列出总量(经常用)

     

    3)创建目录

    mkdir [-mp] 目录1 目录2 目录3...

    选项:

            -m:指定创建目录的权限

             -p:递归创建(创建多级目录的意思)

    注:目录名称有空格的情况请使用!(不建议Linux下文件或目录名称包含空格)

     

    4)删除空目录

    rmdir [-p] 目录名称1 目录名称2 目录名称3...

    选项:

           -p:连同上层空目录一起删除

     

    5)复制

    cp [-ripda] 源文件或目录 目标文件或目录

    选项:

          -r:递归复制(用于复制目录)

          -i:遇到目标位置有同名文件时询问是否覆盖

          -p:连同文件的属性一起复制

          -d:如果源文件为连接文件,则复制链接文件属性而非复制文件本身

          -a:等同-rpd

     

    1. 复制普通文件到某个目录

     

    2. 复制过来之后重命名

     

    3. 复制目录

     

    6)移动文件或目录、重命名

    mv [-fiu] 源文件或目录... 目标文件或目录

    选项:

            -f:如果目标文件已经存在则不询问直接覆盖,强制的意思

            -i:遇到目标位置有同名的文件时询问是否覆盖

           -u:若目标文件不存在,源文件较新则更新

            -t:指定目标目录

    情景分析:

            1. 目标文件是目录但对应目录不存在:原目录会被重命名为目标名称

             2. 目标文件是目录且目录存在:源文件或目录会移动到目标目录下

             3. 目标文件是文件且该文件不存在:源文件重命名为目标文件名

             4. 目标文件是文件但该文件已存在:询问是否覆盖

    展开全文
  • word批量调整图片大小

    千次阅读 2020-04-19 02:02:52
    1.新建一个空白word文档 ...那么我们撤销,返回文件夹,将文件排序方式换成“名称,递减”,这样在文件夹中的顺序就调换了,我们再重复复制粘贴word的操作,,我们就会惊奇的发现在word中的图片按顺...

    1.新建一个空白word文档

    2.选中一组图片(177张),按下ctr+c复制

    3.将这组图片复制到word中。

    (本来我们的图片在文件夹中的时候是排好序且是正序的,可是粘贴到word这里好像变成乱序即倒序了。那么我们撤销,返回到文件夹,将文件的排序方式换成“名称,递减”,这样在文件夹中的顺序就调换了,我们再重复复制粘贴到word的操作,,我们就会惊奇的发现在word中的图片按顺序排好了)

    4.在以打开的word中按下Alt+F8,在红框1输入宏名ctrPicSizeTest(自己取),然后点击红框2的创建

    4.注意红框1,一定要在自己刚建立的宏里面写代码,别张冠李戴。复制这段代码到红框1中

    Myheigth = 24
    Mywidth = 17.52
    On Error Resume Next '忽略错误
    For Each iShape In ActiveDocument.InlineShapes
    iShape.Height = 28.345 * Myheigth '设置图片高度为任意cm
    iShape.Width = 28.345 * Mywidth '设置图片宽度
    Next
    For Each Shape In ActiveDocument.Shapes
    Shape.Height = 28.345 * Myheigth '设置图片高度为任意cm
    Shape.Width = 28.345 * Mywidth '设置图片宽度
    Next

    (可以参照红框1上面那个我已经创建好的宏,其中24是图片的高,17.52是图片的宽),然后红框2的保存

    5.按下Alt+F8,选中刚建立的那个宏ctrPicSizeTest,点击运行。然后你就会发现图片变“大”了。

    设置一下页边距是的看起来好看一些

    6.哒哒哒,完成了

    7.另存为.pdf

    行了。

    展开全文
  • DevC++实现代码高亮复制word

    千次阅读 2019-10-28 17:52:16
    时间: 2019.10.28 缘起: 课程报告大多为word版,日常写代码还是习惯使用 DevC++ ,然而直接在word复制代码,格式实在陋。...本质: 保存为 .rtf 或 .html 等带格式的文件,然后复制,在Word中粘贴。 ...
  • //初始化一个com对象 //以下是完成将利用word对象的排序功能对输入的汉字进行排序 #include "msword.h" #include <atlbase.h><br />BSTR CWordocx5Ctrl::sortword(LPCTSTR str) {  ...
  • Microsoft Office是微软公司的一个文字处理器应用程序,作为办公软件必不可少的神器之一,其中Word、Excel是日常工作中常用的文档管理工具。目前,Aspose系列和Spire系列是文档管理开发API中非常受欢迎的两个系列...
  • 对于word中需要插入大量类型相似的图片,...统一批量生成于word中后,再复制粘贴所需文档的对应地方就可以了。 过程:遍历每个工作表(sheet),根据工作表的名字生成一级标题,然后再遍历当前工作表中已配置好...
  • 使用solr 检索word文档

    千次阅读 2019-06-27 10:06:02
    版权声明:本文为博主原创文章,转载注明出处即可。...I. Solr Solr简介 Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器... Solr比Lucene提供了更的查询语句,而且它可扩展、可配置,同时它...
  • 上一篇文章我们说了在R语言里面,关于excel文件的批处理,点击跳转,今天呢,我们就谈谈一般文件的批量处理。 1、批量获取名称 setwd(“C:/Users/admin/Desktop/test”) xname<-list.files() 2、批量重命名 ...
  • WORD文档里每一页的相同位置插入同一图片的宏代码如下: Sub InsPic() Dim pag As Integer For pag = 1 To Selection.Information(wdNumberOfPagesInDocument)  Selection.GoTo what:=wdGoToPage, Name:=...
  • 1、将excel表格粘贴到word中:(直接粘贴会出现各种不服!) 2、对透视表数据排序: 3、更改透视表数据源: 4、数据透视表的无效行标签如何清除(是否保留从数据源部分中删除的项目) 5、改变透视表汇总行的位置...
  • 第四步:标题1格式复制 第五步:二级标题(标题2)格式设置 第六步:二级标题(标题2)格式复制 第一步:自定义字体格式 操作区(设置想要的一级标题格式): 示例: 第二步:点击编号列表 操作区: ...
  • 在前端如何玩转 Word 文档

    千次阅读 2020-07-20 17:14:31
    在日常工作中,大部分人都会使用 Microsoft Office Word、WPS 或 macOS Pages 等文字处理程序进行 Word 文档处理。除了使用上述的文字处理程序之外,对...
  • 目录修订历史环境安装0.Python-docx新建文档1.Python-docx编辑已存在文档2.win32com将doc转为docx3.win32com操作word3.1 打开新的word文档并添加内容3.2 打开已存在word文档并添加内容3.3 转换word为pdf4.Python-...
  • word中批量修改图片大小的两个方法

    万次阅读 2018-07-19 11:23:26
    如果要的是ppt运行过程中的内容,在qq运行的情况下,按Ctrl+Alt+A截屏,按勾,然后可以直接粘贴到word中(生成的图片已经在剪贴板中了)    ///////////////////////////////////////////////////////////////////...
  • 一键批量打印EXCEL、WORD文档,本方法也可以打印同一个文档N份,可以批量打印A3、A4文档,包括单、双面打印等。希望能帮广大朋友。请大家注重原创版权,不得在未经许可的下转载、传播,或者用来对同事装逼等。。。...
  • 如何在Word文档中粘贴有行号的代码

    千次阅读 2019-05-20 15:56:50
    我们如何在Word文档中粘贴的代码像下图所示: 第一步:进入网站:http://www.planetb.ca/syntax-highlight-word 第二步:将代码粘贴如图所示的框内 第三步:选择所编译的语言,之后再点击Show ...
  • 今天看了几个拖拽,文本文档.txt格式的不支持拖拽,word支持,但是移本身的图标应该为禁止拖拽比较好,它还是可以拖拽的显示。当然,用Microsoft Visual Studio使用拖拽,是像想象的那样,没有什么不同,就像现在...
  • word文档设置页眉页脚的技巧

    万次阅读 2007-05-31 18:55:00
    word文档设置页眉页脚的技巧 分类:海阔天空在工作中经常遇到对文档的排版问题,现在我以一问一答形式进行解析,希望能对大家有帮助。也许在解答方面不够精准,但是能够达到目的;也许回答有些罗嗦,不过也是为了大家...
  • 给朋友捣鼓一个word文档,文档内容是给学生出的题库(嗯,朋友是个老师),从不同的文件中粘过来的题,所以文件中的序号不是按顺序来的。 检查了一下word,发现需要做的事情是这几点: 1.按规律查找所有序号 ...
  • word技巧

    千次阅读 2018-03-01 21:40:22
    word 高效经典教程(整理版)目录一分钟驾驭word 高效经典教程(整理版)... 6A、基础知识... 61、度量单位... 62、WORD中文字字号与磅的对应关系... 63、字体文件格式...... 96、Word文档超级链接知...
  • pd导出word表跟一般软件的导出功能类似,通过模版定义格式和样式,然后导出自定义格式的word。 一、导出word之前先根据数据库反向生成物理模型 需要先通过powerdesigner的反向工程,根据数据库生成physical model...
  • 8种排序我已经整理成word文档,有兴趣的同学可以下载:http://download.csdn.net/detail/pzhtpf/4313015     7、归并排序   (1)基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的...
  • Word 2003 长篇文档排版技巧

    千次阅读 2012-09-03 08:38:11
    简介 市场部经常要出各种分析报告,一写就是洋洋洒洒几...制作目录也是出力不讨好的事,尽管小王知道Word中有插入目录的功能,可是尝试了几次就弃之不用了,原因是系统总是提示有错误。现在只能手工输入目录,加班加点
  • 适用于: Word 2016, Word 2013, Word 2010, Word Online, Word Starter, Word Starter ...Word 提供了用于查找文档中的特定内容的个选项。您可以搜索和替换文本、 图像、 标题、 书签、 或某些类型的格式,如段落
  • word文档中加进参考文献的标注

    千次阅读 2010-06-15 16:20:00
    列顺序,主要分为两种:一是按插入顺序排序,二是按作者的姓名排序。如果是按作者姓名排序,文章内容如果要改动(包括移动、插入或删除),对参考文献在最 后的排序影响不大,编号也好改。但如果是按插入顺序排序(国内...
  • Word技巧

    2012-12-13 17:23:21
    如何用Word编辑参考文献  每个需要写毕业论文的朋友都会发现,修改文献是一件非常...将光标定位于word文档中将要插入参考文献的位置,按“插入/引用/脚注和尾注”。出现一菜单,选择“尾注”,“文档结尾”,编号格

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,752
精华内容 11,500
关键字:

复制多张图片到word文档排序