Python操作word文档的示例详解
写在前面
python-docx 不支持 doc 文档,一定要注意该点,如果使用 doc 文档,需要提前将其用 Word 相关软件转换为 docx 格式。 doc 和 docx 是存在本质差异的,一个是二进制,另一个 XML 格式的文件。
模块的安装 pip install python-docx
。
以下网址首先准备好
- 官方手册:https://python-docx.readthedocs.io/en/latest/index.html
- pypi 官方地址:https://pypi.org/project/python-docx/
资料准备完毕,即可进入编码环节。
创建一个文档
第一个需求,创建一个文档,并在里面写入各种信息。
先实现第一步,写入一个标题
注意下文中的 add_heading()
函数的用法。
from docx import Document # 创建 Document 对象,等价于在电脑上打开一个 Word 文档 document = Document() # 在 Word 文档中添加一个标题 document.add_heading('这是一个标题',level=0) # 保存文档 document.save('demo.docx')
添加文字段落
注意下文中 add_paragraph()
函数添加段落,使用 add_run()
追加文本
from docx import Document # 创建 Document 对象,等价于在电脑上打开一个 Word 文档 document = Document() # 在 Word 文档中添加一个标题 document.add_heading('这是一个标题', level=0) # 文档添加段落 p = document.add_paragraph('这是白给的段落') # 添加带样式的文字 # 添加段落,文本可以包含制表符(\t)、换行符(\n)或回车符(\r)等 # add_run() 在段落后面追加文本 p.add_run('\n我倾斜了').italic = True # 添加一个倾斜文字 p.add_run('\n我加粗了').bold = True # 添加一个加粗文字 # 保存文档 document.save('demo.docx')
在段落前面增加文字
p.add_run('\n我倾斜了').italic = True # 添加一个倾斜文字 p.add_run('\n我加粗了').bold = True # 添加一个加粗文字 # 段落前面插入内容 prep_p = p.insert_paragraph_before('段落之前插入内容')
段落还可以添加分页符,代码如下所示:
# 段落前面插入内容 prep_p = p.insert_paragraph_before('段落之前插入内容') document.add_page_break() p1 = document.add_paragraph('新页新段落')
列表的添加
无序列表的添加
# 添加列表(前面一个小圆点) document.add_paragraph('我前面是小圆点', style='List Bullet') # 添加列表(前面一个小圆点) document.add_paragraph('第二个小圆点', style='List Bullet')
有序列表的添加
# 添加列表(前面数字) document.add_paragraph('我前面是数字', style='List Number') # 添加列表(前面数字) document.add_paragraph('第二个数字', style='List Number')
图片的添加
Document 对象具备的方法如下所示:
add_heading(self, text='', level=1)
:添加标题;add_page_break(self)
:分页符;add_paragraph(self, text='', style=None)
:添加段落;add_picture(self, image_path_or_stream, width=None, height=None)
:添加图片;add_section(self, start_type=2)
:添加节;add_table(self, rows, cols, style=None)
:添加表格;
本部分重点学习 add_picture()
方法。
document.add_picture(r"../9.png", width=Inches(1))
add_picture()
函数中参数 image_path_or_stream
可以为相对地址或者绝对地址,也可以是一个图片数据流,上述代码中 Inches
表示英寸,除此之外, python-docx
还提供了厘米 (Cm) ,如设置 1厘米: Cm(1) ,使用的时候需要提前导入 from docx.shared import Inches, Cm
。
表格添加
使用 add_table()
函数,可以在 Word 文档中添加表格。
p1 = document.add_paragraph('新页新段落') # 添加一个 2×2 表格 table = document.add_table(rows=2, cols=2) # 获取第1行第2列单元格 cell = table.cell(0, 1) # 设置单元格文本 cell.text = '第1行第2列' # 获取第2行 row = table.rows[1] row.cells[0].text = '橡皮擦' row.cells[1].text = '乔喻'
学习的时候注意一下相关注释,即可掌握该部分内容。
相关样式设置
设置格式需要用 add_run()
,直接使用 add_paragraph()
生成的段落不能直接设置字体等样式。
# 模块的导入 from docx.shared import Pt, Cm, Inches from docx.oxml.ns import qn from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.shared import RGBColor # 一级标题 level=0 head0 = document.add_heading(level=0) # 标题居中 head0.alignment = WD_ALIGN_PARAGRAPH.CENTER title_run = head0.add_run('这是一个居中的标题', ) title_run.font.size = Pt(24) # 标题英文字体 title_run.font.name = 'Times New Roman' # 标题中文字体 title_run.element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑') # 字体颜色 title_run.font.color.rgb = RGBColor(4, 60, 169)
其中 WD_ALIGN_PARAGRAPH
对象表示段落对其的方式,其值包括如下内容
WD_ALIGN_PARAGRAPH. LEFT
:左对齐;WD_ALIGN_PARAGRAPH. CENTER
:居中对其;WD_ALIGN_PARAGRAPH. RIGHT
:右对齐;WD_ALIGN_PARAGRAPH. JUSTIFY
:两端对齐;
行距,段间距 line_spacing
属性用来设置行距, space_before
表示段前距, space_after
表示段后距。
斜体,下划线,粗体设置
font.italic = True #设置斜体 font.underline = True #设置下划线 font.bold = True #设置粗体
首行缩进 paragraph_format_line_indent
可以设置缩进值。
其它设置 除了上述内容外,还可以通过 document.styles.add_style('textstyle', WD_STYLE_TYPE. PARAGRAPH)
,使用 add_style()
方法创建新的样式对象,后续就可以通过提供的属性进行样式设置,设置字体使用 font.size
,设置字体颜色为 font.color
。
然后在添加段落的时候,就可以应用该属性了。
from docx.shared import RGBColor from docx.enum.style import WD_STYLE_TYPE style = document.styles.add_style('textstyle', WD_STYLE_TYPE.PARAGRAPH) # 字体大小 style.font.size = Pt(16) # 字体颜色 style.font.color.rgb = RGBColor(66, 100, 0) p1 = document.add_paragraph('神人橡皮擦',style=style)
页眉和页脚
页眉和页脚可以直接设置,参考代码如下所示
header = document.sections[0].header header.add_paragraph('橡皮擦的页眉')
页脚设置
footer = document.sections[0].footer
到此这篇关于Python操作word文档的示例详解的文章就介绍到这了,更多相关Python操作word文档内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://juejin.cn/post/7054355419170340877
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
- 以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
python-for x in range的用法(注意要点、细节)
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
python Matplotlib基础--如何添加文本和标注
这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章介绍了在C#中对config文件的操作,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
- 在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
- 这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
Python getsizeof()和getsize()区分详解
这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20- 这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
- 这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12
- 这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25