使用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实现list元素按关键字相加减的方法示例
Jun 09 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
python如何删除文件中重复的字段
Jul 16 Python
python爬虫 正则表达式解析
Sep 28 Python
如何在python中实现随机选择
Nov 02 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
python logging 日志的级别调整方式
Feb 21 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python如何使用循环结构和分支结构
Apr 13 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遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
jQuery 性能优化指南(2)
2009/05/21 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
Javascript继承机制详解
2017/05/30 Javascript
简述vue中的config配置
2018/01/23 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
回调函数的意义以及python实现实例
2017/06/20 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
如何清空python的变量
2020/07/05 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
python中random模块详解
2021/03/01 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
2014年教研工作总结
2014/12/06 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
详解Java实践之建造者模式
2021/06/18 Java/Android