python-docx官方文档地址

安装  pip3 install python-docx

pip3 install python-docx -i https://pypi.douban.com/simple              豆瓣镜像下载

内联对象一般包括:段落(paragraph)、图片(inline picture)、表(table)、标题(heading)、有序列表(numbered lists)、无序列表(bullets lists)

创建文档

from docx import Document
from docx.shared import Inches
document = Document()  #创建基于默认“模板”的空白文档

打开文档

document = Document('d:/test.docx')  #打开文档

添加段落

paragraph = document.add_paragraph('段落1')  #在尾部添加段落
#参数  段落文本

在段落尾部添加文本

kuai=paragraph.add_run('我是中国人')  #在段落尾部添加文本
#返回值:内联对象
paragraphs=document.paragraphs   #返回段落引用集合--列表
paragraphs[1].text="小Z同学:"  #设置序号1段落的文本

返回段落集合

# 返回段落集合
s=document.paragraphs  #返回段落引用集合--列表# 返回段落总数
s=len(document.paragraphs)  #返回段落总数#返回指定段落的文本
s=document.paragraphs[0].text  #返回指定段落的文本#设置段落样式
paragraph.style = 'List Bullet'  #设置段落样式
paragraph =document.add_paragraph('段落4',style = 'List Bullet')  #添加段落--带段落样式#返回段落样式
s=document.paragraphs  #返回段落引用集合--列表
s1=s[0].style    #返回序号0段落的样式
print(s1)#段落对齐
#需要     from docx.enum.text import WD_ALIGN_PARAGRAPH
paragraph_format = paragraph.paragraph_format  #创建段落格式对象
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER   #段落居中对齐
paragraph_format.alignment =WD_ALIGN_PARAGRAPH.LEFT    #段落左对齐
paragraph_format.alignment =WD_ALIGN_PARAGRAPH.RIGHT   #段落右对齐
paragraph_format.alignment =WD_ALIGN_PARAGRAPH.JUSTIFY   #段落两端对齐
paragraphs=document.paragraphs   #返回段落引用集合--列表
paragraphs[4].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT  #序号4段落右对齐#段落缩进
#段落可以在左侧和右侧分别缩进。第一行也可以具有与段落其余部分不同的缩进,缩进的第一行有一个悬挂缩进
paragraph_format = paragraph.paragraph_format  #创建段落格式对象
paragraph_format.left_indent = Inches(0.5)  #段落左缩进0.5英寸
#需要  from docx.shared import Inches
paragraph_format.right_indent = Pt(20)   #右缩进20点
#from docx.shared import Pt
paragraph_format.first_line_indent = Inches(0.5)  #第一行缩进
paragraphs=document.paragraphs   #返回段落引用集合--列表
paragraphs[2].paragraph_format.first_line_indent=Cm(0.74)  #序号2段落首行缩进0.74厘米
#from docx.shared import Cm#段落间距
paragraph_format = paragraph.paragraph_format  #创建段落格式对象
paragraph_format.space_before = Pt(38)  #设置段落前间距
paragraph_format.space_after = Pt(19)   #设置段落后间距#行间距
paragraph_format = paragraph.paragraph_format  #创建段落格式对象
paragraph_format.line_spacing = Pt(50)   #设置行间距
#行距可以通过段落paragraph_format属性的line_spacing或line_spacing_rule属性来指定,当#line_spacing设置为长度值时表示绝对距离,设置为浮点数时表示行高的倍数,设置为None表示根据继承层次决定 #保存文档
document.save('d:/test.docx')  #保存文档--覆盖原文档#添加标题
document.add_heading('标题', level=0)  #添加标题
#参数2 标题级别  0--9#添加分页
document.add_page_break()  #添加分页#换页方式
#换页方式决定一个段落在一个页面结束附近如何表现,常用属性有如下,每个属性的取值可以为True、False、#None:
#keep_together设置为True时使得整个段落出现在同一页中,如果一个段落在换页时可能会被打断就在段前换页;
#keep_with_next设置为True时使得本段与下一段出现在同一页中;
#page_break_before设置为True时使得本段出现在新的一页的顶端,例如新的一章标题必须从新的一页开始;
#window_control设置为True时表示可以在必要的时候进行分页,避免本段的第一行或最后一行单独出现在一页中#粗体和斜体
kuai=paragraph.add_run('我是中国人')  #在段落尾部添加文本
#返回值:内联对象
kuai.bold = True  #给内联设置粗体
kuai=paragraph.add_run('我是中国人')  #在段落尾部添加文本
#返回值:内联对象
kuai.italic = True  #给内联设置斜体
kuai.underline = True  #给内联设置下划线#字符格式#Run属于行内元素的一种,是一个块级元素的组成部分,可以看做是一段连续的具有相同格式(字体、字号、颜色、加粗、斜体、下画线、阴影等)的文本。一般来说,一个段落会包含一个或多个Run,使得同一个段落中可以包含不同格式的文本#可以通过一个Run对象的font属性来获取和设置该Run的字符格式,例如字体名称font.name、字体大小font.size、是否加粗font.bold、是否斜体font.italic、下画线格式font.underline(True表示单下画线,False表示没有下画线,或者使用WD_UNDERLINE中的成员设置更多下画线格式)、字体颜色font.color.rgb(设置为docx.shared.RGBColor对象)#包括字体字体和大小,粗体,斜体和下划线#设置字体--麻烦一点
kuai.font.name=u'华文彩云'
r = kuai._element
r.rPr.rFonts.set(qn('w:eastAsia'), '华文彩云')
#需要 from docx.oxml.ns import qnkuai.font.size = Pt(30)  #字体大小
kuai.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)  #设置字体颜色
#需要 from docx.shared import RGBColor#样式
s=document.styles  #获取word所有样式集合对象
for i in s:print(i)

章节

from docx import Document
from docx.shared import Inches
from docx.enum.section import WD_ORIENT, WD_SECTIONdocument = Document()
paragraph = document.add_paragraph('段落1')
paragraph = document.add_paragraph('段落5:床前明月光,疑是地上霜。举头望明月,低头思故乡。')document.add_section()  #添加新章节
paragraph = document.add_paragraph('章节2-1')
document.add_section()  #添加新章节
paragraph = document.add_paragraph('章节3-1')sections = document.sections  #返回所有章节引用的对象
s=len(sections)   #返回章节总数
section = sections[0]  #返回指定章节的对象
section = document.sections[-1]  # 返回文档最后一个章节
new_height= section.page_height  #返回章节页面的高
#10058400    单位:像素    1英寸=914400像素
new_width=section.page_width   #返回章节页面的宽
#7772400
section.page_height=10058400  #设置章节的高度
section.page_width =4072400  #设置章节宽度section.orientation = WD_ORIENT.LANDSCAPE  #设置页面方向  ???
#需要  from docx.enum.section import WD_ORIENT, WD_SECTIONs=section.left_margin  #返回左边距--单位像素
s=section.right_margin  #返回右边距--单位像素
s=section.top_margin  #返回上边距--单位像素
s=section.bottom_margin  #返回下边距--单位像素
section.left_margin = Inches(1.5)   #设置左边距
s=section.header_distance   #返回页眉距离--单位像素
s=section.footer_distance  #返回页脚距离--单位像素print(s)
document.save('d:/test.docx')

页眉和页脚

Word支持页眉和页脚。页眉是出现在每个页面的上边距区域中的文本,与文本主体分开,并且通常传达上下文信息,例如文档标题,作者,创建日期或页码。文档中的页眉在页面之间是相同的,内容上只有很小的差异,例如更改部分标题或页码。页眉也称为运行头

页脚在页眉的每个方面都类似,只不过它出现在页面底部。它不应与脚注混淆,脚注在页面之间内容是不一致的

页眉和页脚与一个章节相关联,这允许每个章节具有不同的页眉和/或页脚

页眉:

每个section对象都有一个.header属性,可以访问该节的_Header对象:

from docx import Documentdocument = Document()
paragraph = document.add_paragraph('段落1')
document.add_section()  #添加新章节
paragraph = document.add_paragraph('段落2')
document.add_section()
paragraph = document.add_paragraph('段落3')section = document.sections[0]  #返回序号0章节的引用
header = section.header  #返回章节header引用
print(header.is_linked_to_previous)   #章节头(页眉)是否无定义
#值为True表示_Header对象不包含章节头定义,该章节将显示与上一节相同的章节头#添加页眉
paragraph = header.paragraphs[0]  #返回页眉序号0的段落的引用
#章节头已包含单个(空)段落
#此时把header.is_linked_to_previous属性设为false
paragraph.text = "这是页眉1"print(header.is_linked_to_previous)
document.save('d:/test.docx')

删除页眉

通过将True分配给其.is_linked_to_previous属性,可以删除不需要的页眉:

header = section.header  #返回章节header引用
header.is_linked_to_previous = True  #删除页眉

页脚:

每个section对象都有一个footer属性,可以访问该章节的页脚对象:

section = document.sections[0]  #返回序号0章节的引用
footer=section.footer  #返回章节页脚的引用
print(footer.is_linked_to_previous)
#值为True表示页脚对象不包含定义,该章节将显示与上一节相同的页脚#添加页脚
paragraph = footer.paragraphs[0]  #返回页脚序号0的段落的引用
#页脚已包含单个(空)段落
#此时把footer.is_linked_to_previous属性设为false
paragraph.text = "这是页脚1"
footer.is_linked_to_previous = True  #删除页脚

制表符

tab_stops = paragraph.paragraph_format.tab_stops  #返回段落格式制表符的引用
from docx.enum.text import WD_TAB_ALIGNMENT, WD_TAB_LEADER
tab_stop = tab_stops.add_tab_stop(Inches(4.5), WD_TAB_ALIGNMENT.LEFT, WD_TAB_LEADER.DOTS)  #添加制表位
#参数2 对齐--默认左  https://python-docx.readthedocs.io/en/latest/api/enum/WdTabAlignment.html#wdtabalignment
#参数3 填充符--默认空格    https://python-docx.readthedocs.io/en/latest/api/enum/WdTabLeader.html#wdtableader
print(tab_stop.position)  #返回制表位位置--单位像素
print(tab_stop.position.inches)  #返回制表位位置--单位英寸
tab_stops[0] #返回序号0制表位的引用

表格

添加表格

tables=document.tables  #返回文档所有表格引用集合--列表
tables[0].cell(1,0).text="猫粮1"  #给序号0的表格指定单元格设置文本
table = document.add_table(rows=2, cols=2)  #添加表格

给单元格赋值和读取单元格文本

cell = table.cell(0, 1)  #返回表格的单元格对象
cell.text = '0行1列'   #给单元格赋值
s=cell.text   #返回单元格文本
row = table.rows[1]  #返回行对象
row.cells[0].text = '一行零列'  #给行对象的第n个单元格赋值
s=row.cells[1].text  #返回行对象的第n个单元格的文本
col = table.columns[1]  #返回列对象
col.cells[0].text = '零行1列'  #给列对象的第n个单元格赋值
s=col.cells[1].text  #返回列对象的第n个单元格的文本
tables=document.tables  #返回文档所有表格引用集合--列表
tables[0].cell(1,0).text="猫粮1"  #给序号0的表格指定单元格设置文本

总行数和总列数

s = len(table.rows)     #返回表格的总行数
s = len(table.columns)  #返回表格的总列数

图片

添加图片

document.add_picture('大象.png')  #添加图片--添加的图像以原始大小显示
document.add_picture('大象.png', width=Inches(1.0))  #添加图片
#参数2 图品宽度  -宽度和高度只指定一个,另一个按比例缩放
#Inches--单位是英寸
document.add_picture('大象.png', width=Cm(11.8))#添加图片
#需要   from docx.shared import Cm

python-docx文档相关推荐

  1. python docx文档页面设置---->纵向转横向

    最近需要docx页面输出,需要将正常纵向页面转为横向页面,查了一些资料,发现很多都是科普的解释,并没有讲出具体怎么做,现在贴出我实现的代码. 需要引入的: from docx import Docum ...

  2. docx文档怎么排列图片_“胶水语言”办公自动化Word篇——使用Python编辑和读取Word文档

    python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. 使用python新建一个word文档,操作就像文档里介绍的那样: from docx import Doc ...

  3. 使用Python批量提取并保存docx文档中的图片

    问题描述: 提取docx文档中的所有图片,保存为独立的图片文件. 技术要点: 需要安装扩展库python-docx 示例文件: 参考代码: 码运行结果: 神操作: 如果实在看不懂上面的代码,但是又有同 ...

  4. Python操作docx文档设置居中并创建表格

    功能描述:本文代码使用python-docx操作docx文档,添加一段文字并设置居中对齐,添加一个表格并为所有单元格设置文字. from docx import Document from docx. ...

  5. Python把docx文档中的题库导入SQLite数据库

    #本文所用的docx文档题库包含很多段,每段一个题目,格式为:   问题.(答案) #与之对应的数据库datase.db中tiku表包含kechengmingcheng,zhangjie,timu,d ...

  6. Python使用标准库zipfile+re提取docx文档中超链接文本和链接地址

    推荐教材: <Python程序设计实用教程>,ISBN:978-7-5635-6065-3,董付国,北京邮电大学出版社 教材封面: 全国各地新华书店有售 京东购买链接: 配套资源:教学大纲 ...

  7. python连接mysql输出数据库结构docx文档

    python连接mysql输出数据库结构docx文档-Python文档类资源-CSDN下载

  8. Python使用标准库zipfile提取docx文档中所有图片

    清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30 ============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔 ...

  9. python读取docx中表格 图片_python 解析docx文档的方法,以及提取插入的文本对象和图片...

    首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...

  10. python生成word目录_使用Python更新MS Word .docx文档的目录(目录)

    我使用python包" python-docx"来修改MS Word .docx文档的结构和内容.该软件包无法更新TOC(目录)[Python: Create a "Ta ...

最新文章

  1. 阿里公开招募鉴黄师,日薪1000元,还送硬盘和网盘会员?!
  2. NSURLErrorRelatedURLSessionTaskErrorKey
  3. 【自定义注解使用】增加service层方法访问日志
  4. 概率编程库Pymc3案例之神经网络
  5. Linux常用的基本命令ls、cd、mkdir(一)
  6. 详解android gatekeeper/fingerprint中的authToken
  7. 四种struts2访问web元素的方式
  8. linux 内核 企鹅,Linux 内核 Makefile 体系简单分析
  9. [一分钟先生]涂勇:通过跳槽走上管理岗位不可取
  10. fpga结构主体_两大FPGA公司的“AI技术路线”
  11. 深入出不来nodejs源码-内置模块引入初探
  12. 计算机对用户算题任务的加工过程,操作系统原理答案
  13. ubuntu14.04下svn版本管理系统的安装及常用命令的使用整理
  14. OC 内存管理之手动内存管理MRC
  15. 线性回归相关系数c语言,线性回归中相关系数.doc
  16. mysql 拖库_【渗透测试】温故知新之拖库七种方法
  17. 解决iconfont 图标不显示问题
  18. 普通人最应该具备的素质是什么,韧性
  19. median函数的使用方法_如何在Google表格中使用MEDIAN函数
  20. 段码液晶屏学习应用笔谈

热门文章

  1. 怎样更改itunes备份位置_iTunes备份路径怎么改?教你无脑修改iPhone备份文件路径...
  2. 如何看懂财务报表:(二)财务报表目录解释
  3. 客户分析表格怎么做 财务合并报表培训 5分钟看懂财务报表
  4. 利用高德地图获取地点经纬度,并提取两地驾车、步行、骑行的出行时间、出行距离、费用等参数
  5. signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
  6. 中国水墨动画系列 内容简介
  7. vue项目项目启动步骤及常见错误处理
  8. Google Chrome谷歌浏览器清理缓存的常用方法
  9. python 对两列互补的数据合并
  10. 新版火狐打开时会自动开启360导航