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字符串连接方式汇总
Aug 21 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Python清空文件并替换内容的实例
Oct 22 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
pytorch 实现打印模型的参数值
Dec 30 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
python 利用opencv实现图像网络传输
Nov 12 Python
Python获取指定网段正在使用的IP
Dec 14 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
jquery radio 操作代码
2011/03/16 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
工程造价自荐信
2013/10/09 职场文书
采购求职信
2014/03/17 职场文书
网聊搭讪开场白
2015/05/28 职场文书
雷锋观后感
2015/06/10 职场文书
返乡农民工证明
2015/06/24 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
Python实现归一化算法详情
2022/03/18 Python