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程序设计入门(2)变量类型简介
Jun 16 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
python使用turtle绘制分形树
Jun 22 Python
pandas通过loc生成新的列方法
Nov 28 Python
用Python逐行分析文件方法
Jan 28 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
Python如何导出导入所有依赖包详解
Jun 08 Python
Python超详细分步解析随机漫步
Mar 17 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
How do I change MySQL timezone?
2008/03/26 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php阳历转农历优化版
2016/08/08 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
php精度计算的问题解析
2019/06/21 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
canvas绘制多边形
2017/02/24 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
Python enumerate索引迭代代码解析
2018/01/19 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
python学生管理系统
2019/01/30 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Python底层封装实现方法详解
2020/01/22 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
详解Django配置JWT认证方式
2020/05/09 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
销售实习自我鉴定
2013/12/07 职场文书
公益活动邀请函
2014/02/05 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
员工离职感谢信
2015/01/22 职场文书
董事长岗位职责
2015/02/13 职场文书
2015年安全月活动总结
2015/03/26 职场文书
2016国培研修心得体会
2016/01/08 职场文书
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers
服务器间如何实现文件共享
2022/05/20 Servers