使用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中的split()函数的使用方法
Apr 07 Python
Python中join函数简单代码示例
Jan 09 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
Sep 25 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
python取均匀不重复的随机数方式
Nov 27 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
Pytorch之Variable的用法
Dec 31 Python
python实现随机加减法生成器
Feb 24 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Django 如何实现文件上传下载
Apr 08 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
smtp邮件发送一例
2006/10/09 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
python getopt详解及简单实例
2016/12/30 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
keras中的backend.clip用法
2020/05/22 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
认购协议书范本
2014/04/22 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
教导主任个人总结
2015/03/03 职场文书
水电施工员岗位职责
2015/04/11 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android