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 相关文章推荐
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python实现自动发送邮件功能
Mar 02 Python
python使用itchat实现手机控制电脑
Feb 22 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
Python3字符串encode与decode的讲解
Apr 02 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 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静态类的原罪详解
2013/05/06 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
python文件操作整理汇总
2014/10/21 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Linux下python制作名片示例
2018/07/20 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
浅谈Python 函数式编程
2020/06/20 Python
python 动态绘制爱心的示例
2020/09/27 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
高级技校毕业生自荐信
2013/11/18 职场文书
护士求职推荐信范文
2013/11/23 职场文书
年会活动策划方案
2014/01/23 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫