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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
浅析Python中的多重继承
Apr 28 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
python验证码识别的示例代码
Sep 21 Python
Python3 操作符重载方法示例
Nov 23 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python工厂函数用法实例分析
May 14 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
python创建文件备份的脚本
Sep 11 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
python 实现两个npy档案合并
Jul 01 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 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测试硬盘写入速度示例
2014/01/27 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
web css实现整站样式互相切换
2013/10/29 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
详解python之协程gevent模块
2018/06/14 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
python IDLE添加行号显示教程
2020/04/25 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
买卖车协议书
2014/04/21 职场文书
2016情人节宣传语
2015/07/14 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python