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 获取 Linux 系统信息的代码
Jul 13 Python
python操作mongodb根据_id查询数据的实现方法
May 20 Python
python计算一个序列的平均值的方法
Jul 11 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
python组合无重复三位数的实例
Nov 13 Python
python3学生名片管理v2.0版
Nov 29 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
python安装requests库的实例代码
Jun 25 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
详解Python 循环嵌套
Jul 09 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安装全攻略:APACHE
2006/10/09 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
Python MD5加密实例详解
2017/08/02 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python抖音表白程序源代码
2019/04/07 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
OpenCV 模板匹配
2019/07/10 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
请介绍一下WSDL的文档结构
2013/03/17 面试题
大学毕业自我评价
2014/02/02 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
如何写通讯稿
2015/07/22 职场文书
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS