以下是关于使用pycharm 的docx库学习自动化处理的记录
注意,使用的是python-docx,而不是19年左右使用的docx。
File>settings>project:XXXX(项目名称)>右侧列表左下角小加号
此时在窗口中查找python-docx


老版的docx

但是
可以看到python-docx包已经更新至0.8.10版本了(现在是2021-03-29)

这是作者的发布网站,上面有全部的教程:https://python-docx.readthedocs.io/en/latest/index.html
他在github上:https://github.com/python-openxml/python-docx
记得及时更新


小试牛刀,赋予处理文档的功能

from docx import Documentdocument = Document()

“这会打开一个基于默认“模板”的空白文档,这几乎是您在Word中使用内置默认值启动新文档时所获得的。您可以使用打开和处理现有的Word文档python-docx”

看一下自己的需求


(仅仅作为个人学习用,请让我使用这个字体吧)

  • 标题: 居中 小一 加粗 /跟上的时间使用11号 加粗
  • 副标题 : 居中 11号 加粗
  • 节抬头: 左对齐 11号 下划线 加粗
  • 试卷名: 三号 加粗
  • 题目序号:左对齐 楷体 下划线 加粗 小四 ##形式为: 有序数字加点(半月)##
  • 题目内容:楷体 小四 ##形式为:题目内容( )。##
  • 以及无数的回车

思路是从小至大把需求解决,第一步做到时间、文字格式、段落格式及间距、完成抬头输出,第二部做到读取十几份word的题目,创立一个数据库存好题目,第三步在抬头后输出带序号的题目,并编辑文字格式。最后展望,使用这个数据库学习做一个私人网站。

来,点根烟

  • 这里留给若干年后的自己,回溯这篇学习记录,请点根烟,喝口茶。学医后悔吗,过得怎么样了?

逐步实现文档编写——1.格式化时间

第一步,在文档中插入时间使用time,并进行处理

localtime求验:

import time
print(time.localtime())time.struct_time(tm_year=2021, tm_mon=3, tm_mday=29, tm_hour=5, tm_min=25, tm_sec=15, tm_wday=0, tm_yday=88, tm_isdst=0)

asctime求验:

import time
print(time.asctime())Mon Mar 29 05:22:22 2021

strftime求验

import time
print(time.strftime("%Y-%m-%d %H:%M:%S"))2021-03-29 05:23:06

所以需求代码为

print(time.strftime("%Y-%m-%d"))2021-03-29

逐步实现文档编写——2.字体设置

  1. 首先复习一下中英文字号的互换数据
    字号‘八号’对应磅值5
    字号‘七号’对应磅值5.5
    字号‘小六’对应磅值6.5
    字号‘六号’对应磅值7.5
    字号‘小五’对应磅值9
    字号‘五号’对应磅值10.5
    字号‘小四’对应磅值12
    字号‘四号’对应磅值14
    字号‘小三’对应磅值15
    字号‘三号’对应磅值16
    字号‘小二’对应磅值18
    字号‘二号’对应磅值22
    字号‘小一’对应磅值24
    字号‘一号’对应磅值26
    字号‘小初’对应磅值36
    字号‘初号’对应磅值42
    2.阅读docx作者Font 对象的介绍内容(直达链接:https://python-docx.readthedocs.io/en/latest/api/text.html#font-objects)
    3 总结docx中对字体设置的代码(需求为中文)

思路是先把全体设置为宋体,再每句进行修改

  • 这时我遇到了使用document.styles['Normal'].font.name = u'宋体'控制字体,但在输出的文档里,部分字符仍旧是西文字体的问题。
    解决:
    我网上冲浪了许多大神的文字控制代码,并且在docx作者发布的介绍内容Paragraph Style的Expected usage中有这样一段话
    ——“需要检测缺少样式的开发人员可以轻松地使用oxml层来检查XML,如果发现这些用例比预期的要普遍得多,则可以添加更多功能”
    XML 指可扩展标记语言(eXtensible Markup Language),相关衍生出的代码我觉得老程序员都比我懂太多了 ,虽然找到了这句document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体'),但我还是不能立马想通为什么,待研究吧。
  • 另外我还学习到了docx.shared是一个在全局都可调用,作者设置了诸多类的对象,例如接下来需要使用的Pt,RGBColor都出自这里。源代码https://python-docx.readthedocs.io/en/latest/_modules/docx/shared.html?highlight=oxml#

我事后存下的小单片

from docx import Document
from docx.oxml.ns import qn ##调出设置全局字体时需要的xml操作命令##
from docx.shared import Pt,RGBColor##调出docx共享模块中document = Document()
##设置全局字体类型##
document.styles['Normal'].font.name = u'宋体'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')    ##用paragraph创建一个段落##
##从此处阅读本代码开始,注意paragraph和run的层次关系##
maintitle = document.add_paragraph()
##用run创建一块name字符##
sentence = maintitle.add_run('李菲雯学业放弃指南')
##用font控制字体,其中size控制字体大小,bold控制加粗,color.rgb控制颜色##
##
sentence.font.size = Pt(24)##中文字号‘小一’即为24磅
sentence.font.bold = True
sentence.font.color.rgb = RGBColor(0,0,0)document.save('试运行2.docx')##保存试运行文档

打开试运行2.docx(通过左侧辅助窗口Tool windows)

操作成功


这里提一嘴,翻了Font这部分的介绍内容

类docx.text.run.Font
包装了<w:rPr>的内容,并提供对字符属性(如字体名称,字体大小,粗体和下标)的访问。【加粗效果bold】
读/写。使此字体的文本以粗体显示。【斜体效果italic】
读/写三态值。如果为True,则使运行文本以斜体显示。None会继承父级样式。【字体颜色color,之前我采用了大神们的RGB调色】
ColorFormat提供一种获取和设置此字体的文本颜色的方法的对象。【单删线strike】
读/写三态值。何时True使行中的文本显示为带有一条删除线。【双删线double_strike】
读/写三态值。如果为True,则使运行中的文本以双删除线显示。【字体大小size】
读/写。Length值或None,以英制公制单位(EMU)指示字体高度。None会继承父级样式。Length是int 具有可方便转换为点或其他长度单位的属性的子类。本docx.shared.Pt类允许点值的方便规格。
##字号转换在前文已记录,若深造请阅读作者原文以及公制单位转换##【下划线underline】
下划线样式,None,True,False,或从值WD_UNDERLINE。None指示字体从样式层次结构继承其下划线值。False 表示没有下划线。True表示单个下划线。WD_UNDERLINE中的值用于指定其他轮廓样式,例如double,wavy和dotted。
##如果使用,需先引用:from docx.enum.text import WD_UNDERLINE,可以实现【wavy波浪】、【dotted点线】、及【double双下划】##【浮起效果emboss】
读/写三态值。如果为True,则使运行中的文本看起来像是从页面上浮起的。【轮廓效果outline】
读/写三态值。当True通过在每个字符字形的内部和外部边框周围绘制一个像素宽的边框时,使运行中的字符看起来像轮廓一样。【阴影效果shadow】
读/写三态值。何时True使运行中的文本看起来好像每个字符都有阴影一样。【高亮效果highlight_color】
WD_COLOR_INDEX的成员,指示所应用突出显示的颜色;如果未应用突出显示,则为None。
##如果使用,需先引用:from docx.enum.text import WD_COLOR_INDEX。太简单不做源代码链接了,不过不确定能不能打印出来##【嵌入效果imprint】
读/写三态值。如果为True,则使运行中的文本看起来像按入页面一样。

都2021了,得整明白 发光效果 和 映像效果 是哪个,这项待实验吧

==以下为不常用或今天没有用到的==
【上下标】
subscript
布尔值,指示其中的字符是否Font显示为下标。None会继承层次样式。
superscript
布尔值,指示其中的字符是否Font显示为上标。None会继承层次样式。
【word自动语法检查】
no_proof
读/写三态值。如果为True,则指定在扫描文档的拼写和语法时该运行的内容不应报告任何错误。all_caps
读/写。使此字体的文本以大写字母显示。
【处理英文文档时,一键安排大小写可以用】complex_script
读/写三态值。如果为True,则将运行中的字符视为复杂脚本,而不考虑其Unicode值。math
读/写三态值。当设置True为时,指定此运行包含应该像处理Office Open XML Math一样处理的WML。
【这我不懂,往后补上】name
获取或设置此Font实例的字体名称,如果找到匹配的字体,则导致其控制的文本以命名字体显示。None会继承父级样式。
##【淦,我之前就设了个重复名字的变量,还好没事。请大家注意不要和我烦一样的错误】##rtl
读/写三态值。何时True使运行中的文本具有从右到左的特征。small_caps
读/写三态值。何时True使运行中的小写字符显示为大写字母,比运行中指定的字体大小要小两点。
【未实验,可能是故事书里段落开头的大小写效果】snap_to_grid
读/写三态值。True何时布置运行中的字符时,会导致运行使用docGrid元素中定义的每行设置的文档网格字符。spec_vanish
读/写三态值。当为时True,指定给定的运行将始终像被隐藏一样运行,即使当前文档中显示了隐藏的文本也是如此。
【奇奇怪怪的魔法功能,若深造请阅读作者原文】cs_bold
读/写三态值。如果为True,则使运行中的复杂脚本字符以粗体显示。hidden
读/写三态值。如果True为,则除非在应用程序设置中强制显示隐藏的文本,否则将隐藏运行中的文本。web_hidden
读/写三态值。当为时True,指定当文档在网页视图中显示时,此运行的内容应隐藏。cs_italic
读/写三态值。如果为True,则使运行中的复杂脚本字符以斜体显示。
【奇怪的斜体】

逐步实现文档编写——3.段落设置

目前用下来,发现作者做了三种可以输入文字的方式,对应标题、段落、文字内容。
heading
paragraph
run

试运行了几次,认知如下:

  • heading 没有找到文字格式的控制方法,但1、可以设置标题级别;2、作者给了0~9的级别值,好像每个还有不同的样式。
##这里摘的是介绍网页上的样式##
document = Document()
document.add_heading('Document Title', 0)
document.add_heading('Heading, level 1', level=1)
  • paragraph 没有找到文字格式的编辑方法,但1、是真正意义上的段落,即为“输完字符后敲下回车”;2、可以控制段落格式:左右对齐居中,段间距。
  • run 妥妥的文字内容,本身自带下划线以及,也可以随便你用font七十二变。docx字体的魔法已经在前面全部写到了。
  • 关于python docx 回车/换行问题时走的坑:
    当时以为作者可能没有在docx里做换行(我指在docx实现 硬回车 效果)的命令,傻傻找了一小时,好像他说还在Candidate protocol,往后可能会实现.breaks加上自动左右对齐的功能。
    冷静下来想了这几点:
    其一,不论怎么以“硬回车的概念去百度、谷歌、docx使用指南上搜索“换行”或者“break”字样,都不会得结果。
    毕竟得先理解这个概念:我们通常键入ENTER换行的操作对于word来说就是分段(硬回车),而真正换行指的则是SHIFT+ENTER(软回车),这的确是个我把学费还给小学电脑老师的内容,所以才花费了大量时间读各docx类的源代码。从今往后,打字时所有回车操作一定自己默念一遍“换段!”。
    其二,不断地写添加paragraph已经满足目前的需求了,每创建一个paragraph时docx会自动换段,也就达到了回车的效果。
    【当码农在add_paragraph()、add_run()括号中输入输入字符串并加上\r或者\n,只得实现SHIFT+ENTER(软回车)真正意义上的换行效果(add_paragraph、add_run把换段符、换行符都视作换行),输出结果为向下软回车的小箭头。这一点可以在后文中这两个代码的介绍翻译及源代码中看到。】
    在原理上,可以查看微软官方VBA库以此借鉴,我想docx在设计上是不会违背这个break设计初衷的https://docs.microsoft.com/zh-cn/office/vba/api/Word.WdBreakType
    有一篇问答关于此问题使用VBA的研究描述地非常特别详细,题主描述了和我当时差不多的想法:https://www.cnpython.com/qa/87787
    这里还有一篇可供参考的文章:https://blog.csdn.net/MrKnight/article/details/9717995?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=1328740.37425.16169771368365123&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

下面代码是事后 为明确段落设置方法 专门修改的代码,由几个单片叠加而成(不断添加paragraph创造段落,再添加run输入文字内容)

from docx import Document
from docx.oxml.ns import qn ##调出设置全局字体时需要的xml操作命令##
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT##调用段落格式命令##
from docx.shared import Pt,RGBColor
import time
time = time.strftime("%Y-%m-%d")document = Document()
##设置全局字体类型##
document.styles['Normal'].font.name = u'宋体'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')##用paragraph创建一个段落##
##从此处阅读本代码开始,注意paragraph和run的层次关系##
maintitle = document.add_paragraph()
##用run创建一块name字符##
sentence = maintitle.add_run('李菲雯学业放弃指南')
##用font控制字体,其中size控制字体大小,bold控制加粗,color.rgb控制颜色##
##
sentence.font.size = Pt(24)
sentence.font.bold = True
sentence.font.color.rgb = RGBColor(0,0,0)
todaytime = maintitle.add_run(time)
todaytime.font.size = Pt(11)
todaytime.font.bold = True
todaytime.font.color.rgb = RGBColor(0,0,0)
##
maintitle.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
maintitle.paragraph_format.space_before = Pt(0)
maintitle.paragraph_format.space_after = Pt(0)subtitle = document.add_paragraph()
sentence = subtitle.add_run('第一章'+'【单选】')
sentence.font.size = Pt(11)
sentence.font.bold = True
sentence.font.color.rgb = RGBColor(0,0,0)
subtitle.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
subtitle.paragraph_format.space_before = Pt(0)
subtitle.paragraph_format.space_after = Pt(0)chapters = document.add_paragraph()
sentence = chapters.add_run('第一章内容')
sentence.font.size = Pt(11)
sentence.font.bold = True
sentence.font.color.rgb = RGBColor(0,0,0)
sentence.font.underline = True
chapters.paragraph_format.space_before = Pt(0)
chapters.paragraph_format.space_after = Pt(0)paper = document.add_paragraph()
sentence = paper.add_run('卷'+'A')
sentence.font.size = Pt(16)
sentence.font.bold = True
sentence.font.color.rgb = RGBColor(0,0,0)
paper.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
paper.paragraph_format.space_before = Pt(0)
paper.paragraph_format.space_after = Pt(0)document.save('试运行2.docx')

打开试运行2.docx

操作成功agian!


这里再提一嘴,还是翻了一些东西读了部分源代码,按照实用性降序排列记录在这里。

——翻了Document这部分的介绍内容

类docx.document.Document
WordprocessingML(WML)文档。
使用docx.Document()打开或创建文档。save(path_or_stream )
将此文档保存到path_or_stream,该路径可以是文件系统位置(字符串)的路径,也可以是类似文件的对象。
【不搞这个等于白写】add_heading(文字= u'',等级= 1 )
返回新添加到文档末尾的标题段落。
标题段落将包含文本,并且其段落样式由级别确定。如果level为0,则样式设置为Title。如果level为1(或省略),则使用Title1样式。否则,样式设置为Heading {level}。
【这个level会在超出0-9范围时ValueError报错】add_paragraph(text = u'',style = None )
返回新添加到文档末尾的段落,该段落填充文本并具有段落样式style。文本可以包含制表符(\t)字符,这些字符将转换为制表符的相应XML形式。文本还可以包含换行符(\n)或回车符(\r),每个字符都转换为换行符。
##【回车换行都变成软回车(换行)的魔法在这里,源代码传送门在上面】##=====不常用或者我今天没用到的在这里=====
add_page_break()
返回Paragraph仅包含分页符的新对象。
【分页符,这个在docx介绍首页中有】【以下为读写权限相关的】
core_properties
CoreProperties对象提供对本文件的核心属性读/写访问。sections
Sections 提供对本文档中每个部分的访问权限的对象。
settings
一个Settings对象提供对文档的访问级别设置为这个文件。
styles
Styles提供对本文档中样式的访问权限的对象。【以下为表格控制相关的】
add_table(rows,cols,style = None )
添加具有行和列计数的表行和的cols 分别的表格样式风格。样式可以是段落样式对象或段落样式名称。如果style为None,则表继承文档的默认表样式。
tables
Table按文档顺序与文档中的表相对应的实例列表。
【请注意,只有出现在文档顶层的表才会出现在此列表中。嵌套在表格单元格中的表格不会出现。修订标记中的表格,例如 <w:ins>或<w:del>也不会出现在列表中】
paragraphs
Paragraph按文档顺序对应于文档中各段落的实例列表。
【请注意,修订标记中的段落(例如<w:ins>或)<w:del>不会出现在此列表中】
part
DocumentPart本文档的对象。【图形控制,美工狂喜】
inline_shapes
InlineShapes提供访问此文档中的内嵌形状的对象。内联形状是包含在一段文本中的图形对象(例如图片),其行为类似于字符字形,并像段落中的其他文本一样流动。
【注意是内嵌哦,我还没有找到浮动与文字上下方这种更智能的代码段落】
add_picture(image_path_or_stream,width = None,height = None )
返回文档末尾在其自己的段落中添加的新图片形状。图片包含image_path_or_stream处的图像, 并根据宽度和高度进行缩放。如果未指定宽度和高度,则图片将以其原始尺寸显示。如果仅指定一个,它将用于计算比例因子,然后将其应用于未指定的尺寸,从而保留图像的长宽比。
【图片的原始尺寸是使用图像文件中指定的每英寸点数(dpi)值计算的,如果没有指定值,则默认为72 dpi(通常是这样)】==以下为不常用或今天没有用到的==
add_section(start_type = 2 )
返回一个Section对象,该对象表示在文档末尾添加的新部分。可选的start_type参数必须是WD_SECTION_START枚举的成员。
【如果未提供start_type参数,则会默认为WD_SECTION.NEW_PAGE 】

翻了paragraph这部分的介绍内容

类docx.text.paragraph.Paragraph
代理对象包装<w:p>元素。add_run(text = None,style = None )
将运行添加到此段,其中包含文本并具有由样式ID style标识的字符样式。文本可以包含制表符(\t)字符,这些字符将转换为制表符的相应XML形式。文本还可以包含换行符(\n)或回车符(\r),每个字符都转换为换行符。
【回车换行都变成软回车(换行)的魔法在这里】alignment
WD_PARAGRAPH_ALIGNMENT枚举的成员,指定此段落的对正设置。值为None 表示该段落没有直接应用的对齐方式值,并将从其样式层次结构继承其对齐方式值。分配 None给此属性将删除任何直接应用的对齐值。
【WD_PARAGRAPH_ALIGNMENT是经常从docx.enum.text调用的段落格式控制命令】paragraph_format
在ParagraphFormat提供对本段的格式属性,诸如行间距和缩进对象。
##【哎嘿,ParagraphFormat是另一个对象了,你对象真多。血皇敖天
大神已经做了全部的整理,传送门就在我写的paragraph当中。可以读一下源代码https://python-docx.readthedocs.io/en/latest/_modules/docx/text/parfmt.html#ParagraphFormat。】##insert_paragraph_before(text = None,style = None )
返回一个新创建的段落,该段落直接插入到该段落之前。如果提供了文本,则新段落将在一次运行中包含该文本。如果风格提供,这种风格被分配给新的段落。
【我看到有大神使用这段代码,自己还是没动力写,腰疼了,待实验】=====不常用或者我今天没用到的在这里=====
clear()
删除所有段落后,返回同一段落。保留段落级格式,例如样式。
runs
Run与本段中<w:r>元素相对应的实例序列。
style
读/写。_ParagraphStyle表示分配给此段落的样式的对象。如果没有为该段落指定显式样式,则其值为文档的默认段落样式。可以指定段落样式名称来代替段落样式对象。分配将None删除所有应用的样式,使其有效值成为文档的默认段落样式。
text
通过将段落中每次运行的文本串联起来形成的字符串。XML中的制表符和换行符分别映射到\t和\n 字符。
将文本分配给该属性会导致所有现有段落内容被包含分配的文本的单次运行替换。\t文本中的一个字符映射到一个<w:tab/>元素,每个\n或一个\r字符映射到一个换行符。保留段落级格式,例如样式。删除所有运行级别的格式,例如粗体或斜体。
【text和add_run一样都是回车换行都变成软回车的魔法】

——翻了run这部分的介绍内容

【加粗,之前提到的font.bold与此处run.bold用法类似】
bold
读/写。使运行文本以粗体显示。【斜体,之前提到的font.italic与此处run.italic用法类似】
italic
读/写三态值。如果为True,则使运行文本以斜体显示。【下划线,之前提到的font.underline与此处run.underline用法类似】
underline
下划线样式此Run,一None,True,False,或从值WD_UNDERLINE。值None表示运行没有直接应用的下划线值,因此将继承其包含段落的下划线值。分配None给此属性将删除任何直接应用的下划线值。值 False表示没有下划线的直接应用设置,将覆盖任何继承的值。值True表示单个下划线。WD_UNDERLINE中的值用于指定其他轮廓样式,例如double,wavy和点线。【添加文字,更友好及明确的超级码农金坷垃】
add_text(文字)
将新添加的_Text对象(对应于新的 <w:t>子元素)返回到运行中,其中包含text。【返回字体格式,超级码农金坷垃】
font
该Font对象提供对此运行的字符格式设置属性的访问,例如字体名称和大小。【叫姜文也翻译不来的的超级码农金坷垃】
clear()
删除其所有内容后,返回对该运行的引用。保留所有运行格式。==以下为不常用或今天没有用到的==【添加图片,】
add_picture(image_path_or_stream,width = None,height = None )[资源]
返回一个InlineShape实例,该实例包含由image_path_or_stream标识的图像 ,并添加到此运行的末尾。 image_path_or_stream可以是路径(字符串)或包含二进制图像的文件状对象。如果未指定宽度和高度,则图片将以其原始尺寸显示。如果仅指定一个,它将用于计算比例因子,然后将其应用于未指定的尺寸,从而保留图像的长宽比。图片的原始尺寸是使用图像文件中指定的每英寸点数(dpi)值计算的,如果没有指定值,则默认为72 dpi(通常是这样)。
【添加制表符】
add_tab()
<w:tab/>在运行结束时添加一个元素,Word会将其解释为制表符。docx.text.run.Run
代理对象包装<w:r>元素。几个上的运行性能的需要三态值,True,False,或None。True和False 分别对应于开和关。None指示未在运行时直接指定属性,并且其有效值来自样式层次结构。style
读/写。一个_CharacterStyle表示字符样式对象适用于本运行。如果运行中没有直接应用的字符样式,则返回文档的默认字符样式(通常为Default Character Font)。将此属性设置为None 会删除任何直接应用的字符样式。【最后是有待实验的八股文系列】
text
通过将等效于每个运行内容子元素的文本串联到Python字符串中而形成的字符串。每个<w:t>元素都会添加其包含的文本字符。甲<w:tab/>元件增加了一个\t字符。甲<w:cr/>或<w:br>元件每增加一个\n字符。请注意,<w:br>元素可以指示分页符或列分隔符以及换行符。无论其类型如何,所有<w:br> 元素都转换为单个\n字符。所有其他内容子元素(例如<w:drawing>)都将被忽略。分配的文本以该属性具有相反的效果,平移每个\t字符的<w:tab/>元件,并且每个\n或 \r字符到一个<w:cr/>元件。任何现有的运行内容将被替换。运行格式保留。

另外,在run对象介绍中作者设置了一个关于换行的类:

【我在探索add_break换行功能时的笔记】
关于代码        add_break(break_type = 6 )
作者给了以下介绍
==向此运行中添加break_type的break元素。==
==break_type可以使用值WD_BREAK.LINE,WD_BREAK.PAGE和 WD_BREAK.COLUMN,其中WD_BREAK是从docx.enum.text导入的。 break_type默认为WD_BREAK.LINE。==于是我理解并实践了一下
==这个break我研究了好久,作者仅仅说了break_type = 6的结果,于是我做了尝试,结果求得这些结果==
break_type = 6、break_type = 8、、WD_BREAK是软回车(小箭头)的效果;
break_type = 7、break_type = 9是WD_BREAK.PAGE的效果;
break_type = X,当X为1~5时报错key为空。==最后可爱的pycharm看我太纠结,甩给了我源代码==def add_break(self, break_type=WD_BREAK.LINE):"""Add a break element of *break_type* to this run. *break_type* cantake the values `WD_BREAK.LINE`, `WD_BREAK.PAGE`, and`WD_BREAK.COLUMN` where `WD_BREAK` is imported from `docx.enum.text`.*break_type* defaults to `WD_BREAK.LINE`."""type_, clear = {WD_BREAK.LINE:             (None,           None),WD_BREAK.PAGE:             ('page',         None),WD_BREAK.COLUMN:           ('column',       None),WD_BREAK.LINE_CLEAR_LEFT:  ('textWrapping', 'left'),WD_BREAK.LINE_CLEAR_RIGHT: ('textWrapping', 'right'),WD_BREAK.LINE_CLEAR_ALL:   ('textWrapping', 'all'),}[break_type]br = self._r.add_br()if type_ is not None:br.type = type_if clear is not None:br.clear = clear
==最后补充一句,WD_BREAK在==

——提一嘴paragraph_format最实用的几个,这里暂且不翻,毕竟大神链接在上面,随时可以翻了吧。

first_line_indent首行缩进
space_after段前间距
space_before段后间距

找这些玩意儿真的太费烟。

好了,第一步完成!

注意,我在初次写时创造了name变量,还好我没老板没产品经理,没报错没出事!在font里有.name命令的!我后来全给RUA下来改成sentence了,千万别像我一样犯大忌!


感谢所有在csdn上记录博客的大神们倾情分享 [1]docx作者发布的使用指南 https://python-docx.readthedocs.io/en/latest/index.html
[2]我在这里找到的关于中西文字体转换问题的代码https://blog.csdn.net/weixin_30856965/article/details/95873544
[3]docx处理的整体思路框架参考:https://blog.csdn.net/weixin_42763696/article/details/105492135
[4]docx处理的格式思路框架参考:https://blog.csdn.net/weixin_44015805/article/details/95673437
[5]当docx包遇到函数报错:https://blog.csdn.net/qq_43965708/article/details/109272690

“正经人谁写日记啊”——姜文

一包烟尝试解决docx安装失败,并尝试运行标号、全文格式、生成表格自动化处理(2)相关推荐

  1. 一根烟尝试解决docx安装失败,并尝试运行标号、全文格式、生成表格自动化处理(1)

    惊!小白两年后重启python 结果吃了当头一棒! 搭班护士姐姐最近要自考,看她辛苦于是答应给她做一套题库,咸鱼上买一堆word,然后收集起来整理格式. 天真地pip install python-d ...

  2. 解决pytorch-gpu 安装失败方案

    这篇文章主要介绍了解决pytorch-gpu 安装失败的记录,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 ubuntu18 系统上已经配置好gpu加速环境 安装py ...

  3. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结

    技术帖:AutoCAD没有按照正确方式卸载,导致AutoCAD安装失败.楼主也查过网上关于如何解决AutoCAD安装失败的一些文章,是说删除几个AutoCAD文件和AutoCAD软件注册表就可以解决A ...

  4. CAD安装失败怎样卸载重新安装CAD,解决CAD安装失败的方法总结

    技术帖:CAD没有按照正确方式卸载,导致CAD安装失败.楼主也查过网上关于如何解决CAD安装失败的一些文章,是说删除几个CAD文件和CAD软件注册表就可以解决CAD安装失败的问题,实际的情况并没有这么 ...

  5. 3DMAX安装失败怎样卸载重新安装3DMAX,解决3DMAX安装失败的方法总结

    3DMAX安装失败怎样卸载重新安装3DMAX,解决3DMAX安装失败的方法总结 参考文章: (1)3DMAX安装失败怎样卸载重新安装3DMAX,解决3DMAX安装失败的方法总结 (2)https:// ...

  6. 终极解决VS2015 安装失败问题,如 安装包损坏或丢失

    终极解决VS2015 安装失败问题,如 安装包损坏或丢失 参考文章: (1)终极解决VS2015 安装失败问题,如 安装包损坏或丢失 (2)https://www.cnblogs.com/tmdsle ...

  7. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结【转载】

    技术帖:AutoCAD没有按照正确方式卸载,导致AutoCAD安装失败.楼主也查过网上关于如何解决AutoCAD安装失败的一些文章,是说删除几个AutoCAD文件和AutoCAD软件注册表就可以解决A ...

  8. win10系统安装到服务器失败怎么解决,windows10安装失败怎么办?解决win10安装失败的方法教程[多图]...

    ?自从win10 v2004正式推出之后,有许多朋友都选择将win7安装为win10系统,但是有部分朋友在安装的时候却出现了win10安装失败的情况,或者直接卡在win10安装的进程中,不知道如何解决 ...

  9. Revit安装失败怎样卸载重新安装Revit,解决Revit安装失败的方法总结

    技术帖:Revit没有按照正确方式卸载,导致Revit安装失败.楼主也查过网上关于如何解决Revit安装失败的一些文章,是说删除几个Revit文件和Revit软件注册表就可以解决Revit安装失败的问 ...

最新文章

  1. redisTemplate分布式锁演变、redission分布式锁实现!
  2. 项目Beta冲刺(团队3/7)
  3. 每日一皮:死循环的深刻理解...
  4. Apache按天截断日志工具,无法生成访问日志
  5. shell脚本触发java程序支持传参补跑_01
  6. arcgis栅格邻域统计_地理工具学习--arcgis篇:单工具学习(14)
  7. Oracle统计信息中的Pending Statistics
  8. 【华为云技术分享】从零搭建一个灰度发布环境
  9. 是指能够被程序员看到的计算机系统的属性,计算机组成原理复习范围详细.doc...
  10. 精简linux (二)背景图片的设置 网络功能的实现
  11. 接口设计的一些小总结
  12. Android 网易云IM开发
  13. mfc键盘控制移动鼠标光标_如何在Windows中使用键盘控制鼠标光标
  14. Excel文件双击打开后无内容且不可编辑,再次双击文件正常显示
  15. 全志 android 编译,全志A20启动代码流程分析 ——Android
  16. 基于微信小程序的快递取件及上门服务-计算机毕业设计
  17. ReID:通用性能评价标准
  18. 不动点迭代法(C语言)
  19. 安卓个人中心头像模块(从相册选择和照相功能,适配7.0)
  20. 利用ENVI实现landsat 5地表温度反演

热门文章

  1. 计算机管理无用怎么办,厉害:腾讯计算机管理器无法卸载,该怎么办
  2. python定时运行py文件_Python使用windows设置定时执行脚本
  3. vue + mavon-editor编辑器
  4. zephyr的GPIOTE驱动开发记录——基于nordic的NCS
  5. 梦幻西游服务器物品掉落概率,梦幻西游:宝图死于脚本?大量服务器滞销,几率疯狂暗改!...
  6. 关于混沌的几点认识(摘自得到app《混沌》)
  7. TI Lab_SRR学习_2 天线布局和系统设计
  8. 油塔企业云盘为企业数字的资产提供更安全的存储方式
  9. 每一节网课背后,硬核黑科技大曝光
  10. 匈奴 东胡 突厥 蒙古 契丹 女真 ……终于全部搞懂了!值得看。