使用Python 自动生成 Word 文档的教程


Posted in Python onFebruary 13, 2020

当然要用第三方库啦 :)

使用以下命令安装:

pip install python-docx

使用该库的基本步骤为:

1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件)。

2.设置文档的格式(默认字体、页面边距等)。

3.在文档对象中加入段落文本、表格、图像等,并指定其样式。

4.保存文档。

注:本库仅支持生成Word2007以后版本的文档类型,即扩展名为.docx 的。

下面分步介绍其基本使用方法:

步骤一:

from docx import Document
 
doc = Document()        #以默认模板建立文档对象
 
doc = Document('a.docx')   # 读取a.docx文档,建立文档对象

步骤二:

from docx.shared import Inches,Pt
 
def chg_font(obj,fontname='微软雅黑',size=None):
 
  ## 设置字体函数
 
  obj.font.name = fontname
 
  obj._element.rPr.rFonts.set(qn('w:eastAsia'),fontname)
 
  if size and isinstance(size,Pt):
 
    obj.font.size = size
 
 
distance = Inches(0.3)
 
sec = doc.sections[0]       # sections对应文档中的“节”
 
sec.left_margin = distance   # 以下依次设置左、右、上、下页面边距
 
sec.right_margin = distance
 
sec.top_margin = distance
 
sec.bottom_margin = distance
 
sec.page_width =Inches(12)    #设置页面宽度
 
sec.page_height = Inches(20)    #设置页面高度
 
##设置默认字体
 
chg_font(doc.styles['Normal'],fontname='宋体')

步骤三:

1.添加段落文本

paragraph =doc.add_paragraph('text....')
 
ph_format =paragraph.paragraph_format
 
ph_format.space_before =Pt(10)   #设置段前间距
 
ph_format.space_after =Pt(12)    #设置段后间距
 
ph_format.line_spacing=Pt(19)    #设置行间距

如果希望同一段落中的文本格式不同,就需要使用Run对象(可以理解为可以单独设置格式的段落内对象)。

如:

run = paragraph.add_run('text...')
 
run.bold = True #设置字体为粗体
 
chg_font(run,fontname='微软雅黑', size=Pt(12)) #设置字体和字号

2.添加表格,并写入相关内容

tab =doc.add_table(rows=4,cols=4)  #添加一个4行4列的空表
 
cell=tab.cell(1,3) #获取某单元格对象(从0开始索引)

在单元格中添加文本:

cell.text='abc'

在单元格中添加多行文本(指定转行)

ph =cell.paragraphs[0]
 
run=ph.add_run(‘text....')'
run.add_break()        # 添加一个折行
run.add_picture('a.png')  # 插入图像,可以是内存中的图像,width=Inches(1.0)指定宽度。

3.在文档中添加图像:

doc.add_picture('a.png')

步骤四:

doc.save('a.docx') # 保存图像

做一个简单的测试,其生成文档的速度还是比较快的。感觉比以前用reportlab库生成PDF文档要快不少呢!

下图是用此方式生成docx文档的截图:

使用Python 自动生成 Word 文档的教程

以上这篇使用Python 自动生成 Word 文档的教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中global与nonlocal比较
Nov 21 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
python逆序打印各位数字的方法
Jun 25 Python
python判断数字是否是超级素数幂
Sep 27 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
Python对象与引用的介绍
Jan 24 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
Python自动抢红包教程详解
Jun 11 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python通过链接抓取网站详解
Nov 20 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
requests在python中发送请求的实例讲解
Feb 17 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 #Python
python isinstance函数用法详解
Feb 13 #Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 #Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 #Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 #Python
Python使用docx模块实现刷题功能代码
Feb 13 #Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 #Python
You might like
多php服务器实现多session并发运行
2006/10/09 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
js常用排序实现代码
2010/12/28 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python实现微信打飞机游戏
2020/03/24 Python
python em算法的实现
2020/10/03 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
建议书标准格式
2014/03/12 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
公司2015年终工作总结
2015/05/26 职场文书
酒桌上的开场白
2015/06/01 职场文书
文化大革命观后感
2015/06/17 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python