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 28 Python
Python批量重命名同一文件夹下文件的方法
May 25 Python
Python向日志输出中添加上下文信息
May 24 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
python线程池(threadpool)模块使用笔记详解
Nov 17 Python
Python Json序列化与反序列化的示例
Jan 31 Python
基于Python pip用国内镜像下载的方法
Jun 12 Python
python实现flappy bird小游戏
Dec 24 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
整理Python中常用的conda命令操作
Jun 15 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
python 阶乘累加和的实例
2019/02/01 Python
python tkinter窗口最大化的实现
2019/07/15 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
Python扫描端口的实现
2021/01/25 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
非功能性需求都包括哪些方面
2013/10/29 面试题
公司联欢晚会主持词
2014/03/22 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
旷课检讨书500字
2014/10/14 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js