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翻译软件实现代码(使用google api完成)
Nov 26 Python
python访问sqlserver示例
Feb 10 Python
Python中os和shutil模块实用方法集锦
May 13 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
Python分支结构(switch)操作简介
Jan 17 Python
Python分支语句与循环语句应用实例分析
May 07 Python
Python函数和模块的使用总结
May 20 Python
python 读取数据库并绘图的实例
Dec 03 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
vue常用指令代码实例总结
Mar 16 Python
Python天气语音播报小助手
Sep 25 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 serialize()与unserialize()的用法
2013/06/05 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
用JS写的一个TableView控件代码
2010/01/23 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
前台接待的工作职责
2013/11/21 职场文书
上班看电影检讨书
2014/02/12 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
政协会议宣传标语
2014/10/09 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python