docx 库

文章结构:

  一、docx 基本用,创建 docx 文件并添加数据

  二、深入理解文本格式(format),并设置所格式属性(attribute)

  三、深入理解样式(styles),以及如何运用样式

  四、常用样式(style)示例

一、docx基本用法,创建docx 文件并添加数据

  官方文档:https://python-docx.readthedocs.org/en/latest/

  docx 可以操作 doxc 格式文件

  linux 安装 sudo pip install python_docx (不要安装错了,python_docx 是新版本,如果只是安装 docx 有些 API 会不匹配)

  windows 安装 pip install python_docx

  基本用法:

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

  效果展示:

<--------------------            start            -------------------->

<--------------------            end            -------------------->

二、深入理解文本格式(format),并设置所格式属性(attribute)

  根据官方文档所述,word 中主要有两种用文本格式等级:块等级(block-level)和内联等级(inline-level)

  word 中大部分内容都是由这两种等级的对象组成的

  (其他的诸如眉页、引脚等,docx 库的作者还在开发中)

  块等级(block-level)

    段落是 word 文件中的主要块对象(block-level object)

    块等级项(block-level item)主要任务是将文本格式从左边界向右边界展示(flows);\

    对于段落而言,边界就是分段标识,或者是文本的列边界

    列表(table)也是块对象(block-level object)

  内联等级(inline-level): 

    内联对象(inline-level object)是块对象(block-level object)的组成部分

    块对象的所有内容都包含在内联对象中,一个块对象由一个或多个内联对象组成

    run 是常用的内联对象,例如:

         p = document.add_paragraph('This is paragraph')p.add_run('bold').bold = Truep.add_run(' and some ')p.add_run('italic.').italic = True

    这个例子中一个段落(块对象)包含三个 run(内联对象),每一个 run 都设置有不同属性

  块等级,及其属性

    块对象一般包括:段落(paragraph)、图片(inline picture)、表(table)、标题(heading)、\

    有序列表(numbered lists)、无序列表(bullets lists)

    块对象的属性指定了块对象所在的位置,例如缩进、段间距离

    常用属性:

      alignment,水平对齐

from docx.enum.text import WD_ALIGN_PARAGRAPHparagraph = document.add_paragraph("hello")
paragraph_format = paragraph.paragraph_format#设置段落水平右对齐
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER#WD_ALIGN_PARAGRAPH 存储了多种对齐格式,例如:
#WD_ALIGN_PARAGRAPH.LEFT,左对齐;WD_ALIGN_PARAGRAPH.RIGHT,右对齐
#更多参见https://python-docx.readthedocs.org/en/latest/api/enum/WdAlignParagraph.html#wdparagraphalignment

      indent,缩进

from docx.shared import Inches
from docx.shared import Pt#设置段落从左开始缩进,使用Inches来衡量
paragraph_format.left_indent = Inches(0.5)#设置段落从右开始缩进,使用Pt来衡量
paragraph_format.right_indent = Pt(20)#设置段落第一行缩进,可以与上两个缩进叠加
paragraph_format.first_line_indent = Inches(0.5)

      space,行间距

from docx.shared import Pt#设置与上一段间隔 Pt(5)
paragraph.space_after = Pt(5)#设置与下一段间隔 Pt(10)
paragraph.space_before = Pt(10)

      其他熟悉如字间距、页码等属性,参见文档:https://python-docx.readthedocs.org/en/latest/user/text.html

  内联等级,及其属性  

    内联对象一般包括:文字、句子、段落

    内联对象的属性指定了字体,例如粗体(bold)、斜体(italic)、大小(size)等等

    常用属性:

      name and size

document = Document()
paragraph = document.add_paragraph()run = paragraph.add_run("hellohellohello")
font = run.font#设置字体样式
font.name = 'Calibri'
#设置字体大小
font.size = Pt(55)

      bold 、underline and underline

#设置为斜体
font.italic = True
#不设置下划线
font.underline = False
#设置粗体为继承上一个字体的格式
font.bold = None#这一类属性,每个有三种状态
#True 为使用属性;False 为不使用属性;None 默认属性继承自上一个字体#此外,underline 属性还可以设置值,例如
font.underline = WD_UNDERLINE.DOT_DASH
#更多选项参见http://python-docx.readthedocs.org/en/latest/api/enum/WdUnderline.html#wdunderline

      color

#以RGB方式设置颜色
from docx.shared import RGBColor
font.color.rgb = RGBColor(0x42, 0x24, 0xE9)#使用内建主题设置颜色
#详细说明参见https://python-docx.readthedocs.org/en/latest/api/enum/MsoThemeColorIndex.html#msothemecolorindex
from docx.enum.dml import MSO_THEME_COLOR
font.color.theme_color = MSO_THEME_COLOR.ACCENT_1

三、深入理解样式(styles),以及如何运用样式

  在 word 中,样式包括:段落样式(paragraph styles)、字符样式(character styles)、表样式(table styles)、列表样式(numbering styles)

  样式类似于前端开发的 CSS,一处定义,处处使用

  docx 库内的 styles 样式不包含 word 中全部的样式,有一些还在开发中,但是基本够用

  Document 的属性 styles,包含了所有 docx 提供的可用样式  

  选取段落可用样式

#显示所有段落样式
from docx.enum.style import WD_STYLE_TYPE
styles = document.stylesparagraph_styles = [s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH]for style in paragraph_styles:print(style.name)#styles 为 Document 的属性,style 为段落的属性
#除了段落(paragraph),还有 run,表(table)有 style 属性

  段落设置样式

document = Document()#从styles中选取样式
paragraph = document.add_paragraph()
paragraph.style = document.styles['Heading 1']#用样式名称直接赋值
paragraph2 = document.add_paragraph()
paragraph2.style = 'List Bullet'#在创建段落时赋值
paragraph = document.add_paragraph(style='Body Text')

  定义样式(style)中的字符格式(character format)

    定义样式中的字符格式后,所有运用此样式的段落都有相应的字符格式

document = Document()#从样式库中选取 'Normal' 样式,并提取 'Normal' 样式的字符属性
style = document.styles['Normal']
font = style.font#设置样式中的字符属性 ,操作方法和上面改变内联对象属性方法一致
font.name = "Microsoft YaHei UI"
font.size = Pt(50)#将设置好字符属性的样式运用到段落中
p = document.add_paragraph("change font attribution", style = 'Normal')

  定义样式(style)中的段落格式(paragraph format)

    定义样式中的段落格式后,所有运用此样式的段落都有相应的段落格式

document = Document()
styles = document.styles#选取 style,并设置 style 中的段落格式
style = styles['Heading 2']
para_format = style.paragraph_format
para_format.left_indent = Pt(20)
para_format.widow_control = True#将设置好段落格式的 style 运用到段落中
p = document.add_paragraph('This is Heading, level 1', style = style)

  简单总结

    文章第二部分直接设置段落的格式(paragraph.format),字符的格式(run.font)

    在这一部分,运用了 style 对象,统一设置了段落格式、字符格式

    一旦 style 对象设置好了以后,可以多次反复利用

    style 对象是从文件对象中提取(document.styles)的,docx 提供的 Style 类对象

四、常用样式(style)示例

  段落样式

from docx.enum.style import WD_STYLE_TYPE
from docx import *document = Document()
styles = document.styles#生成所有段落样式
for s in styles:if s.type == WD_STYLE_TYPE.PARAGRAPH:document.add_paragraph('Paragraph style is : '+ s.name, style = s)document.save('para_style.docx')

  字符样式

from docx.enum.style import WD_STYLE_TYPE
from docx import *document = Document()
styles = document.styles
para = document.add_paragraph()#生成所有字符样式
for s in styles:if s.type == WD_STYLE_TYPE.CHARACTER:run = para.add_run("Character style is:  "+s.name+"\n")run.style = sdocument.save('character_style.docx')

  表格样式

from docx.enum.style import WD_STYLE_TYPE
from docx import *document = Document()
styles = document.styles#生成所有表样式
for s in styles:if s.type == WD_STYLE_TYPE.TABLE:document.add_paragraph("Table style is :  "+ s.name)document.add_table(3,3, style = s)document.add_paragraph("\n")document.save('demo2.docx')

python使用 docx 库操作 docx 格式文件相关推荐

  1. 用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件

    docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...

  2. python-docx库_用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件...

    docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...

  3. python存储数据的操作(csv格式文件,Excel表格文件)!!!

    python存储数据 存储数据的方式 两种存储数据方式的区别 csv格式文件 Excel格式文件 csv文件的写入 csv文件的读取 Excel基本概念 Excel文件的写入 Excel文件的读取 存 ...

  4. python操作xlsx格式文件

    python操作xlsx格式文件 一.准备工作 二 .xlrd库读取 三.pandas库读取 1.安装pandas: pip install pandas 2.代码如下 3.操作行列 一.准备工作 二 ...

  5. python操作excel格式文件

    python操作excel格式文件 1. 读数据 2. 写excel 3.操作整合 1. 读数据 安装包 pip install openpyxl 导包 from openpyxl import lo ...

  6. python操作XML格式文件

    python操作XML格式文件 python操作XML格式文件 1. 读取文件和内容 2.读取节点数据 3.修改和删除节点 4.构建文档 python操作XML格式文件 可扩展标记语言,是一种简单的数 ...

  7. python使用hdfs库操作Hadoop的HDFS

    此次使用python的hdfs库操作HDFS,首相安装该库:pip install hdfs 其次,要保证HDFS可用,如下图就代表可用,当然你列出的文件和我的不同 老规矩,先来看看它这个库的大概结构 ...

  8. python处理文本文件实现生成指定格式文件的方法

    python处理文本文件实现生成指定格式文件的方法 关于python处理文本文件实现生成指定格式文件,很多朋友都不知道该怎么弄. 下面是具体代码,希望对大家有帮助 可以在下面复制: import os ...

  9. ArcPy操作shp格式文件

    目录 ArcPy操作shp格式文件 shp文件介绍 创建shp 编辑shp 编辑列/字段 插入列 编辑行/记录 主要涉及的对象 arcpy.Cursor(游标)对象 arcpy.Row对象 arcpy ...

最新文章

  1. python list 删除元素_Python的list循环遍历中,删除数据的正确方法
  2. android获取指针空间大小_腾讯笔试题:浅谈计算机中cpu位数和指针
  3. 一步一步SharePoint 2007之八:允许所有域用户访问网站
  4. nginx Win下实现简单的负载均衡(2)站点共享Session
  5. python matplotlib显示图片_Python OpenCV ——Matplotlib显示图片
  6. VTK:可视化算法之IronIsoSurface
  7. SpringMvc的执行过程
  8. 机器学习两大派别--南大周志华
  9. [转]ubuntu network is unreachable 解决记
  10. 20.Java集合框架(四)
  11. Qt学习之路之解决unable to find a qt build,to solve this problem specify a qt build
  12. 一份软件工程行业生存指南
  13. 云计算产业分析及企业级laaS建设探讨
  14. iphone计算机怎么显示电话,苹果手机最近通话记录不显示怎么恢复
  15. phpstudy启动不了mysql数据库_phpstudy的数据库服务不能正常启动该怎么办
  16. 变形金刚2幕后制作解密
  17. 突发!爱奇艺崩了!小米电视崩了,韩剧TV也崩了?爱奇艺回应:正全力解决...
  18. DB2存储过程——begin end的作用
  19. 编码器的分类及工作原理
  20. POI在Word文档插入表格,表格中插入图片总结

热门文章

  1. SQL*NET MORE data to client
  2. java安装_Java编程语言的历史和未来
  3. 尚硅谷周阳老师2020最新Springcloud完整版学习
  4. 基于Python pdfplumber实现PDF转WORD
  5. 维特比算法(Viterbi algorithm) 的理解
  6. 技术漫谈:哪种操作系统最适合固态硬盘
  7. 过账期间未清和关帐过帐期间设置
  8. android 记录触屏坐标,android触摸屏坐标手工校准/调整成功
  9. excel 多列内容合并为一个单元格
  10. Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比