使用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读取sqlite数据库文件的方法分析
Aug 07 Python
Python高级用法总结
May 26 Python
python八皇后问题的解决方法
Sep 27 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
python Paramiko使用示例
Sep 21 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
Python Matplotlib库实现画局部图
Nov 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 Ubb代码编辑器函数代码
2012/07/05 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
asm.js使用示例代码
2013/11/28 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
详解在Python程序中使用Cookie的教程
2015/04/30 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
保卫科工作岗位职责
2014/03/01 职场文书
明信片寄语大全
2014/04/08 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
Java异常处理try catch的基本用法
2021/12/06 Java/Android