使用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中itertools模块用法详解
Sep 25 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
python顺序执行多个py文件的方法
Jun 29 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
Python post请求实现代码实例
Feb 28 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
编写python程序的90条建议
Apr 14 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
Element Input组件分析小结
2018/10/11 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
Python中的包和模块实例
2014/11/22 Python
python实现数独算法实例
2015/06/09 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
PyTorch中permute的用法详解
2019/12/30 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
小学毕业寄语大全
2014/04/03 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python