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 getopt 参数处理小示例
Jun 09 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python随机读取文件实现实例
May 25 Python
详解django中自定义标签和过滤器
Jul 03 Python
利用nohup来开启python文件的方法
Jan 14 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
python for循环remove同一个list过程解析
Aug 14 Python
python编写猜数字小游戏
Oct 06 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
用python计算文件的MD5值
Dec 23 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
Laravel框架中自定义模板指令总结
2017/12/17 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
几种tab切换详解
2017/02/03 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
生物制药专业自我鉴定
2014/02/19 职场文书
2015年库房工作总结
2015/04/30 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL