Python操作Word批量生成文章的方法


Posted in Python onJuly 28, 2015

下面通过COM让Python与Word建立连接实现Python操作Word批量生成文章,具体介绍请看下文:

需要做一些会议记录。总共有多少呢?五个地点x7个月份x每月4篇=140篇。虽然不很重要,但是140篇记录完全雷同也不好。大体看了一下,此类的记录大致分为四段。于是决定每段提供四种选项,每段从四选项里随机选一项,拼凑成四段文字,存成一个文件。而且要打印出来,所以准备生成一个140页的Word文档,每页一篇。

需要用到win32com模块(下载链接: http://sourceforge.net/projects/pywin32/files/ ),

通过COM让Python与Word建立连接。代码如下:

# -*- coding: cp936 -*-
#导入随机数模块
import random
#导入win32com模块,用来操作Word
import win32com 
from win32com.client import Dispatch, constants
#创建新的WORD文档
w = win32com.client.Dispatch('Word.Application')
w.Visible = 0#0表示在后台操作。设为1则在前端能看到Word界面。
w.DisplayAlerts = 0#不显示警告
doc = w.Documents.Add()
#准备对文档头部进行操作
myRange = doc.Range(0,0)#从第0行第0个字开始:
myRange.Style.Font.Name = "宋体"#设置字体
myRange.Style.Font.Size = "16"#设置为三号
#========以下为文章的内容部分=======
#文章标题(用\n来控制文字的换行操作)
title='XXXXX会\n会议时间: '
#会议时间
timelist=['1月9日','1月16日','1月23日','1月30日',
 '2月6日','2月13日','2月20日','2月27日',
 '3月6日','3月13日','3月20日','3月27日',
 '4月3日','4月10日','4月17日','4月24日',
 '5月8日','5月15日','5月22日','5月29日',
 '6月5日','6月12日','6月19日','6月26日',
 '7月3日','7月10日','7月17日','7月24日'
 ]
#会议地点
addrlist=['\n会议地点: 地点AXXX\n主持人: 张X\n',
 '\n会议地点: 地点BXXXX主持人: 吴X\n',
 '\n会议地点: 地点CXXXX\n主持人: 王X\n',
 '\n会议地点: 地点DXXXX\n主持人: 冉X\n',
 '\n会议地点: 地点EXXXX\n主持人: 李X\n',
 ]
#参加人员
member='参加人员: XXX,XXX,XXX,XXX,XXX,XXX,XXX。\n会议内容:\n '
#四段文字
list1=['第一段(A型)\n','第一段(B型)\n','第一段(C型)\n','第一段(D型)\n']
list2=['第二段(A型)\n','第二段(B型)\n','第二段(C型)\n','第二段(D型)\n']
list3=['第三段(A型)\n','第三段(B型)\n','第三段(C型)\n','第三段(D型)\n']
list4=['第四段(A型)\n','第四段(B型)\n','第四段(C型)\n','第四段(D型)\n']
#开始循环操作,往Word里面写文字
 #先开始遍历地点(A,B,C,D,E四个地区)
for addr in addrlist:
 #遍历28个日期
 for time in timelist:
 #随机生成四个数(范围0-3)
 aa=random.randint(0,3)
 bb=random.randint(0,3)
 cc=random.randint(0,3)
 dd=random.randint(0,3)
 #从文件开头依次插入标题、时间、地点、人物
 myRange.InsertAfter(title)
 myRange.InsertAfter(time)
 myRange.InsertAfter(addr)
 myRange.InsertAfter(str3)
 #在后面继续添加随机选取的四段文字
 myRange.InsertAfter(list1[aa])
 myRange.InsertAfter(list2[bb])
 myRange.InsertAfter(list3[cc])
 myRange.InsertAfter(list4[dd])
#循环完毕,保存为 D:\d.doc
doc.SaveAs(r'D:\d.doc')
#退出操作
doc.Close()
w.Quit()

最终结果如图:

================================================================

Python操作Word批量生成文章的方法

==============================================================

写在最后:

由于写的比较仓促,所以有些细节问题没能解决,花了20分钟手动调整了一下。觉得有些屈辱。问题如下:

1.正文是三号字体,所以在range处的字号设置了“16”。想让题目是二号字体、居中显示。

2.如何在第四段写完之后,自动插入一个分页符?这样每篇文章打印出来的都有独立的页,不至于出现“第2篇文章的标题紧跟在第1篇文章的屁股后面、打印在了同一张纸上”的情况。

以上就是本文全部介绍,希望对大家学习Python操作Word批量生成文章的方法有所帮助

Python 相关文章推荐
Python基础之函数用法实例详解
Sep 10 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
Python中的Numpy矩阵操作
Aug 12 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python实现堆排序的实例讲解
Feb 21 Python
python实现按日期归档文件
Jan 30 Python
baselines示例程序train_cartpole.py的ImportError
May 20 Python
Python实现批量转换文件编码的方法
Jul 28 #Python
Python中subprocess的简单使用示例
Jul 28 #Python
Python中文竖排显示的方法
Jul 28 #Python
Python中的getopt函数使用详解
Jul 28 #Python
Python3访问并下载网页内容的方法
Jul 28 #Python
python3抓取中文网页的方法
Jul 28 #Python
python列表操作之extend和append的区别实例分析
Jul 28 #Python
You might like
php的正则处理函数总结分析
2008/06/20 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
js模块加载方式浅析
2017/08/12 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python字典操作实例详解
2017/11/16 Python
python ddt实现数据驱动
2018/03/14 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
Django后台admin的使用详解
2019/07/08 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
兼职业务员岗位职责
2014/01/01 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
迎国庆演讲稿
2014/09/15 职场文书
财务工作失职检讨书
2014/11/21 职场文书
升职自荐信怎么写
2015/03/05 职场文书
2015年团支部工作总结
2015/04/03 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang