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 时间操作例子和时间格式化参数小结
Apr 24 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
python使用htmllib分析网页内容的方法
May 08 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
python实现淘宝购物系统
Oct 25 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
python 实现IP子网计算
Feb 18 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python查询sqlite数据表的方法
2015/05/08 Python
Python中的自省(反射)详解
2015/06/02 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
python读取文件名称生成list的方法
2018/04/27 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
愚人节活动策划方案
2014/03/11 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
保护环境建议书300字
2014/05/13 职场文书
白血病募捐倡议书
2014/05/14 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
运动会班级前导词
2015/07/20 职场文书
小学语文国培研修日志
2015/11/13 职场文书