python3处理word文档实例分析


Posted in Python onDecember 01, 2020

直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,在过程上有一点繁琐,一下子看不懂的小伙伴可以把它拆分成几个部分来看。下面就在python3处理word文档的代码给大家带来讲解,还会有一些设置文章格式的技巧。

一个Word文档,主要由下面这些内容元素构成,每个元素都有对应的方法处理:

  • 标题:add_heading()
  • 段落:add_paragraph()
  • 文本:add_run(),其返回对象支持设置文本属性
  • 图片:add_picture()
  • 表格:add_table()、add_row()、add_col()
import pathlib

from docx import Document
from docx.shared import Inches, Pt
from docx.oxml.ns import qn
 
path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/003word')
out_path = path.joinpath('003word_create.docx')
img_path = path.joinpath('dance.jpg')
document = Document()
document.add_heading('Python1024_自动生成标题', 0)
document.add_heading('基本:文本', level=1)
p = document.add_paragraph('测试文本\n测试内容\n')
p.add_run('粗体部分内容\n').bold = True
p.add_run('斜体部分\n').italic = True
p.add_run('下划线部分\n').underline = True
p.add_run('字体设置\n').font.size = Pt(24)
# 测试第三方字体
x = p.add_run('三方字体测试\n')
x.font.name = 'Source Han Sans CN' # 思源字体
x.element.rPr.rFonts.set(qn('w:eastAsia'), 'Source Han Sans CN')
# 段落和引用
document.add_heading('标题一:段落', level=1)
document.add_paragraph('引用块', style='Intense Quote')
document.add_heading('标题1.1、无序列表', level=2)
opts = ['选项1','选项2', '选项3']
# 无需列表
for opt in opts:
  document.add_paragraph(opt, style='List Bullet')
document.add_heading('标题1.2、有序列表', level=2)
# 有序列表
  document.add_paragraph(opt, style='List Number')
document.add_heading('标题二:图片', level=1)
document.add_picture(str(img_path), width=Inches(5))
document.add_page_break()
document.add_heading('标题三:表格', level=1)
records = (
  (1, '电风扇', '无叶风扇'),
  (2, '吹风机', '离子风机'),
  (3, 'Macbook pro', 'Apple macbook pro 15寸')
)
# 表格
table = document.add_table(rows=1, cols=3)
# 表头
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '数量'
hdr_cells[1].text = 'ID'
hdr_cells[2].text = '描述信息'
# 表格数据
for qty, cid, desc in records:
  row_cells = table.add_row().cells
  row_cells[0].text = str(qty)
  row_cells[1].text = cid
  row_cells[2].text = desc
# 保存文档
document.save(out_path)

设置段落样式,

如下:

document.add_paragraph('这是一个样式为 ListBullet 的段落', style='ListBullet')

paragraph = document.add_paragraph('这是一个样式为 ListBullet 的段落')
paragraph.style = 'List Bullet'

设置段落间距

分为 段前 和 段后 ,设置值用 Pt 单位是 磅 ,如下:

paragraph_format.space_before = Pt(18)
paragraph_format.space_after = Pt(12)

设置段落行距 

当行距为 最小值 和 固定值 时,设置值单位为 磅 ,需要用 Pt ;当行距为 多倍行距 时,设置值为数值,如下:

from docx.shared import Length

#SINGLE     => 单倍行距(默认)

#ONE_POINT_FIVE => 1.5倍行距

#DOUBLE2    => 倍行距

#AT_LEAST    => 最小值

#EXACTLY    => 固定值

#MULTIPLE    => 多倍行距

paragraph.line_spacing_rule = WD_LINE_SPACING.EXACTLY #固定值

paragraph_format.line_spacing = Pt(18) # 固定值18磅

paragraph.line_spacing_rule = WD_LINE_SPACING.MULTIPLE #多倍行距

paragraph_format.line_spacing = 1.75 # 1.75倍行间距

到此这篇关于python3处理word文档实例分析的文章就介绍到这了,更多相关python3处理word文档代码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
python实现决策树
Dec 21 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
详解Python并发编程之创建多线程的几种方法
Aug 23 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
python默认参数调用方法解析
Feb 09 Python
Django中FilePathField字段的用法
May 21 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
AI:如何训练机器学习的模型
Apr 16 Python
python中os.path.join()函数实例用法
May 26 Python
python3中布局背景颜色代码分析
Dec 01 #Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 #Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 #Python
python录音并调用百度语音识别接口的示例
Dec 01 #Python
用python爬虫批量下载pdf的实现
Dec 01 #Python
python3字符串输出常见面试题总结
Dec 01 #Python
python3中数组逆序输出方法
Dec 01 #Python
You might like
php无限遍历文件夹示例分享
2014/03/04 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
详解js闭包
2014/09/02 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python实战之制作天气查询软件
2019/05/14 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
使用K.function()调试keras操作
2020/06/17 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
EJB实例的生命周期
2016/10/28 面试题
人力资源总监工作说明
2014/03/03 职场文书
工作岗位说明书模板
2014/05/09 职场文书
领导欢迎词范文
2015/01/26 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers