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

  基本用法:

#!/usr/bin/env python
#coding: utf-8from docx import Document
from docx.shared import Inches#创建 Document 对象,相当于打开一个 word 文档
document = Document()#向文档中添加一个标题,标题级别设置为0级
document.add_heading('This is title', level=0)#向文档中添加一个段落,并将段落引用赋给变量 p
#使用 add_run 方法追加字段,并设置格式
p = document.add_paragraph('This is paragraph')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True#添加标题和段落,采用不同的形式
document.add_heading('This is Heading, level 1', level=1)
document.add_paragraph('Intese quote',style="Intense Quote")
document.add_paragraph('first item in unordered list', style='List Bullet')
document.add_paragraph('first item in ordered list', style='List Number')#添加图片,设置图片大小
document.add_picture(r"D:\picture\a.jpg", width=Inches(2.25))#添加表格,填入表格内容
table = document.add_table(rows=2, cols=2)
table.cell(0,0).text = "cell_00"
table.cell(0,1).text = "cell_01"
table.cell(1,0).text = "cell_10"
table.cell(1,1).text = "cell_11"#保存文本
document.save('demo.docx')

  效果展示:

<--------------------            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')

原文:http://www.cnblogs.com/ontheway703/p/5266041.html

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

  1. Python学习第九篇:zipfile 库操作压缩包

    ​ Python学习第九篇:zipfile 库操作压缩包 -- 活动地址:CSDN21天学习挑战赛 zipfile是python里用来做zip格式编码的压缩和解压缩的 zipfile里有两个非常常用的 ...

  2. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  3. python 循环播放音乐_pyaudio:基于pyaudio利用Python编程实现播放音频mp3、wav等格式文件...

    基于pyaudio利用Python编程实现播放音频mp3.wav等格式文件 T1.while循环输出数据流的方法def play(): chunk=1024 #2014kb wf=wave.open( ...

  4. pyaudio:基于pyaudio利用Python编程实现播放音频mp3、wav等格式文件

    基于pyaudio利用Python编程实现播放音频mp3.wav等格式文件 目录 输出结果 实现代码 输出结果 实现代码 T1.while循环输出数据流的方法 def play():chunk=102 ...

  5. netcdf库读取nc格式文件中的字符串类型的数据

    netcdf库读取nc格式文件 一.背景 二.工具使用 三.测试代码 四.测试结果 一.背景 这两天解析数据需要解析nc格式的文件,时间是字符串类型的,最开始还以为这个数据有问题呢,使用panoply ...

  6. python中读写excel的扩展库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  7. python如何引用txt_python项目依赖库生成requirements.txt文件

    python项目依赖库生成requirements.txt文件 第一种:pip freeze > requirements.txt 第二种:pipreqs 项目根目录(不能有中文)--encod ...

  8. python写入excel公式有哪些库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  9. python与excel常用的第三方库_Python读写Excel文件第三方库汇总

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  10. Python 技术篇-利用pdfkit库实现html格式文件转换PDF文档实例演示

    准备: 首先需要安装 pdfkit 库,使用 pip install pdfkit 命令就好了. 还需要安装 wkhtmltopdf 工具,本质就是利用这个工具来进行转换,pdfkit 库就是作为接口 ...

最新文章

  1. bat 命令返回结果_bat教程[284] unzip解压
  2. 关于SpringAOP的XML方式的配置
  3. python configparse_python中ConfigParse模块的用法
  4. java删除不,Java文件不能删除,该怎么解决
  5. python查找路径代码_Python搜索路径
  6. 2014年天津市第一批科技计划项目
  7. C/C++ _beginthreadex 多线程操作 - 线程同步
  8. 激光破解太空通信难题
  9. Collection NSArrayM was mutated while being enumerated
  10. 联想微型计算机改win7,联想win10改win7如何实现?联想电脑Win10改Win7方法详解
  11. Veu表达与v-model
  12. winpCap中compile和nocap函数
  13. discuz全局数组变量 后台各项设置 完整版
  14. html中if函数的使用方法,if函数的使用方法 if函数怎么使用
  15. c语言贾宗璞答案,c语言答案 贾宗璞、许合利
  16. Node.js+Vue.js全栈开发王者荣耀手机端官网和管理后台(一)
  17. python简易爬取喜马拉雅MP3
  18. 《Real-Time Rendering 4th Edition》全文翻译 - 第15章 非真实感渲染(下)15.3 ~ 15.5
  19. SparkStreaming读取Kafka数据源并写入Mysql数据库
  20. Unity声音 Sound (圣典篇)

热门文章

  1. 长得好看,但没有男朋友是怎样的体验?
  2. 学海无涯提供100-300M免费全能空间申请
  3. 普通的dub的sdl配置
  4. matlab 打开立即窗口,《如何编程打开或关闭VBE界面中的立即窗口及其他窗口?》-- access911.net 文章...
  5. WORD出现VBE6EXT.OLD不能被加载的问题
  6. 程序员需要掌握的单词
  7. 解放你的双手,python在excel中的高效办公
  8. 七个技巧!Godaddy域名安全指数提高N倍
  9. ios开发学习--按钮(Button)效果源码分享
  10. Java基础教程笔记