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在校内发人人网状态(人人网看状态)
Feb 19 Python
Python操作Excel插入删除行的方法
Dec 10 Python
python字典改变value值方法总结
Jun 21 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
django使用channels实现通信的示例
Oct 19 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
JavaScript高级程序设计
2006/12/29 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
django数据库migrate失败的解决方法解析
2018/02/08 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
python实现函数极小值
2019/07/10 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python可视化text()函数使用详解
2020/02/11 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
质量工程师岗位职责
2013/11/16 职场文书
教育技术职业规划范文
2014/03/04 职场文书
中学生寄语大全
2014/04/03 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
党支部换届选举方案
2014/05/08 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
金榜题名主持词
2015/07/02 职场文书
情况说明书格式及范文
2019/06/24 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
python执行js代码的方法
2021/05/13 Python