草庐IT

word文档样式批量处理,久违了

Python 集中营 2023-03-28 原文

这里批量处理word文档的操作主要是通过python-docx非标准库实现的,通过定位到文档对象、再到段落、最后到一行文本从而完成针对文字对象的处理。

【阅读全文】

使用pip的方式安装python-docx

pip install python-docx

将实现过程中需要的模块导入进来

from docx import Document  # 文档处理对象

from docx.shared import RGBColor, Pt, Cm  # 文本样式处理

import os  # 应用/文件处理

import glob  # 文件处理

定义需要处理的文件路径及生成的目标文件的路径

source_file = 'C:/source'  # 来源文件路径

target_file = 'C:/target'  # 目标文件路径

将需要批量处理样式的word文档放到source目录下面,我这里准备了一个文档作为演示处理。

下面是处理文本样式的代码块实现部分。

for current_file in glob.glob(source_file + '/*.docx'):  # 遍历word文档文件

    word_obj = Document(current_file)  # 初始化word对象

    for para in word_obj.paragraphs:  # 遍历当前文档段落

        for run in para.runs:  # 遍历当前段落的文本块

            if 'Python' in run.text: # 判断当前文本块是否包含Python字符串

                run.font.underline = True  # 加上下划线

                run.font.color.rgb = RGBColor(255, 0, 0)  # 设置字体颜色为红色

    word_obj.save(target_file + '/' + os.path.basename(current_file))

处理完成的效果如下:

执行完上述代码块就可以实现我们想要的效果:批量设置word文档样式。

最后,再补充几个工具的使用方式,设置字体颜色时可以参考下面的颜色对照表。

颜色对照表地址:

https://tool.oschina.net/commons?type=3

其他字体样式的设置参考下面的代码块

'''
# 加粗
font.bold = True
# 斜体
font.italic = True
# 下划线
font.underline = True
# 删除线
font.strike = True
# 字号
font.size = Pt(20)
# 阴影
font.shadow = True
'''

使用时,直接在文本块中调用即可。在上面的文本处理中我们使用的是加下划线设置。

run.font.underline = True  # 加上下划线

比如:若是需要添加阴影则直接在当前对应的文本块中进行类似的处理。

run.font.shadow = True

最后,需要注意的一点是在执行处理时不要将word文档使用wps或其他工具打开,否则会出现找不到文件的报错信息。

【往期精选】

python 如何在多层循环中使用break/continue!

用python为心爱的人制作520照片墙,已成功做出效果图!

两个库搞定python中引用javascript代码块/文件...

python实现excel数据与mysql数据库互通有无!

python 实现超快窗口截图,自动获取当前活动窗口并展示截图...

有关word文档样式批量处理,久违了的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. ruby-on-rails - Rails 3 I18 : translation missing: da. datetime.distance_in_words.about_x_hours - 2

    我看到这个错误:translationmissing:da.datetime.distance_in_words.about_x_hours我的语言环境文件:http://pastie.org/2944890我的看法:我已将其添加到我的application.rb中:config.i18n.load_path+=Dir[Rails.root.join('my','locales','*.{rb,yml}').to_s]config.i18n.default_locale=:da如果我删除I18配置,帮助程序会处理英语。更新:我在config/enviorments/devolpment

  3. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

  4. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  5. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  6. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  7. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

  8. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  9. ruby - 如何使用 Ruby HTTP::Net 处理 404 错误? - 2

    我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。

  10. Ruby 等同于 Sphinx 文档生成器? - 2

    Ruby有一些不错的文档生成器,例如Yard、rDoc,甚至Glyph。问题是Sphinx可以做网站、PDF、epub、LaTex等。它在重组文本中完成所有这些事情。在Ruby世界中有替​​代方案吗?也许是程序的组合?如果我也能使用Markdown就更好了。 最佳答案 自1.0版以来,Sphinx有了“域”的概念,它是从Python和/或C以外的语言标记代码实体(如方法调用、对象、函数等)的方法。有一个rubydomain,所以你可以只使用Sphinx本身。您唯一会缺少的(我认为)是Sphinx使用autodoc从源代码自动创建文档

随机推荐