使用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多线程编程(八):使用Event实现线程间通信
Apr 05 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
python测试mysql写入性能完整实例
Jan 18 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
python抓取网页中链接的静态图片
Jan 29 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
Python GUI编程 文本弹窗的实例
Jun 11 Python
Python根据服务获取端口号的方法
Sep 25 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
python+playwright微软自动化工具的使用
Feb 02 Python
python基于opencv批量生成验证码的示例
Apr 28 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代码DOS造成用光网络带宽
2011/03/01 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
php实现cookie加密的方法
2015/03/10 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
js 表格隔行颜色
2009/12/02 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
Python运用于数据分析的简单教程
2015/03/27 Python
Python模拟登陆实现代码
2017/06/14 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
村级换届选举方案
2014/05/10 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python
MSSQL基本语法操作
2022/04/11 SQL Server
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server