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实现ipsec开权限实例
Nov 11 Python
python关闭windows进程的方法
Apr 18 Python
Python实现批量修改文件名实例
Jul 08 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python实现完整的事务操作示例
Jun 20 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
Python实现带参数与不带参数的多重继承示例
Jan 30 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
Django框架模板的使用方法示例
May 25 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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/10/23 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
javascript OFFICE控件测试代码
2009/12/08 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
学习jQuey中的return false
2015/12/18 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python 3.8 新功能全解
2019/07/25 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
好的自荐信包括什么内容
2013/11/07 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
移交协议书
2014/08/19 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
上班旷工检讨书
2015/08/15 职场文书