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使用自定义user-agent抓取网页的方法
Apr 15 Python
python 内置函数filter
Jun 01 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
python得到windows自启动列表的方法
Oct 14 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
Apr 01 Python
python中append函数用法讲解
Dec 11 Python
详解Python小数据池和代码块缓存机制
Apr 07 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 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 stream_context_create()作用和用法分析
2011/03/29 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
介绍一下Ruby的多线程处理
2013/02/01 面试题
大学生自荐信
2013/12/11 职场文书
全民健身日活动方案
2014/01/29 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
文化苦旅读书笔记
2015/06/29 职场文书