使用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使用MySQLdb for Python操作数据库教程
Oct 11 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
python对html代码进行escape编码的方法
May 04 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python实现简单登陆系统
Oct 18 Python
python对html过滤处理的方法
Oct 21 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
python怎么判断模块安装完成
Jun 19 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
js图片上传的封装代码
2017/08/01 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
C#基础面试题
2016/10/17 面试题
销售人员获奖感言
2014/02/05 职场文书
安全生产先进个人材料
2014/02/06 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
地球一小时宣传标语
2014/06/24 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript