python使用 docx 库操作 docx 格式文件
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 格式文件相关推荐
- 用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件
docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...
- python-docx库_用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件...
docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...
- python存储数据的操作(csv格式文件,Excel表格文件)!!!
python存储数据 存储数据的方式 两种存储数据方式的区别 csv格式文件 Excel格式文件 csv文件的写入 csv文件的读取 Excel基本概念 Excel文件的写入 Excel文件的读取 存 ...
- python操作xlsx格式文件
python操作xlsx格式文件 一.准备工作 二 .xlrd库读取 三.pandas库读取 1.安装pandas: pip install pandas 2.代码如下 3.操作行列 一.准备工作 二 ...
- python操作excel格式文件
python操作excel格式文件 1. 读数据 2. 写excel 3.操作整合 1. 读数据 安装包 pip install openpyxl 导包 from openpyxl import lo ...
- python操作XML格式文件
python操作XML格式文件 python操作XML格式文件 1. 读取文件和内容 2.读取节点数据 3.修改和删除节点 4.构建文档 python操作XML格式文件 可扩展标记语言,是一种简单的数 ...
- python使用hdfs库操作Hadoop的HDFS
此次使用python的hdfs库操作HDFS,首相安装该库:pip install hdfs 其次,要保证HDFS可用,如下图就代表可用,当然你列出的文件和我的不同 老规矩,先来看看它这个库的大概结构 ...
- python处理文本文件实现生成指定格式文件的方法
python处理文本文件实现生成指定格式文件的方法 关于python处理文本文件实现生成指定格式文件,很多朋友都不知道该怎么弄. 下面是具体代码,希望对大家有帮助 可以在下面复制: import os ...
- ArcPy操作shp格式文件
目录 ArcPy操作shp格式文件 shp文件介绍 创建shp 编辑shp 编辑列/字段 插入列 编辑行/记录 主要涉及的对象 arcpy.Cursor(游标)对象 arcpy.Row对象 arcpy ...
最新文章
- python list 删除元素_Python的list循环遍历中,删除数据的正确方法
- android获取指针空间大小_腾讯笔试题:浅谈计算机中cpu位数和指针
- 一步一步SharePoint 2007之八:允许所有域用户访问网站
- nginx Win下实现简单的负载均衡(2)站点共享Session
- python matplotlib显示图片_Python OpenCV ——Matplotlib显示图片
- VTK:可视化算法之IronIsoSurface
- SpringMvc的执行过程
- 机器学习两大派别--南大周志华
- [转]ubuntu network is unreachable 解决记
- 20.Java集合框架(四)
- Qt学习之路之解决unable to find a qt build,to solve this problem specify a qt build
- 一份软件工程行业生存指南
- 云计算产业分析及企业级laaS建设探讨
- iphone计算机怎么显示电话,苹果手机最近通话记录不显示怎么恢复
- phpstudy启动不了mysql数据库_phpstudy的数据库服务不能正常启动该怎么办
- 变形金刚2幕后制作解密
- 突发!爱奇艺崩了!小米电视崩了,韩剧TV也崩了?爱奇艺回应:正全力解决...
- DB2存储过程——begin end的作用
- 编码器的分类及工作原理
- POI在Word文档插入表格,表格中插入图片总结
热门文章
- SQL*NET MORE data to client
- java安装_Java编程语言的历史和未来
- 尚硅谷周阳老师2020最新Springcloud完整版学习
- 基于Python pdfplumber实现PDF转WORD
- 维特比算法(Viterbi algorithm) 的理解
- 技术漫谈:哪种操作系统最适合固态硬盘
- 过账期间未清和关帐过帐期间设置
- android 记录触屏坐标,android触摸屏坐标手工校准/调整成功
- excel 多列内容合并为一个单元格
- Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比