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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python批量转换文件编码格式
May 17 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
python常见排序算法基础教程
Apr 13 Python
python音频处理用到的操作的示例代码
Oct 27 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
python和c语言哪个更适合初学者
Jun 22 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命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
js实现开关灯效果
2020/03/30 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
python的setattr函数实例用法
2020/12/16 Python
python中的时区问题
2021/01/14 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
写给保洁员表扬信
2014/01/08 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
2014年英语工作总结
2014/12/20 职场文书
就业推荐表导师评语
2014/12/31 职场文书
商场圣诞节活动总结
2015/05/06 职场文书