使用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 字符串定义
Sep 25 Python
python dict remove数组删除(del,pop)
Mar 24 Python
Python break语句详解
Mar 11 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
python实现读取并显示图片的两种方法
Jan 13 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python处理excel绘制雷达图
Oct 18 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
python新手学习使用库
Jun 11 Python
利用python查看数组中的所有元素是否相同
Jan 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
php 远程关机操作的代码
2008/12/05 PHP
ie6 动态缩略图不显示的原因
2009/06/21 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php实现简单四则运算器
2020/11/29 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
python安装以及IDE的配置教程
2015/04/29 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
Python tkinter label 更新方法
2018/10/11 Python
Python自带的IDE在哪里
2020/07/01 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
分层教学实施方案
2014/03/19 职场文书
数学教育专业求职信
2014/07/22 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
中学生自我评价范文
2015/03/03 职场文书