Python操作Word【批量生成文章】

http://www.cnblogs.com/codex/p/4668396.html

需要做一些会议记录。总共有多少呢?五个地点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()

最终结果如图:

================================================================

==============================================================

写在最后:

  由于写的比较仓促,所以有些细节问题没能解决,花了20分钟手动调整了一下。觉得有些屈辱。问题如下:

1.正文是三号字体,所以在range处的字号设置了“16”。想让题目是二号字体、居中显示。

2.如何在第四段写完之后,自动插入一个分页符?这样每篇文章打印出来的都有独立的页,不至于出现“第2篇文章的标题紧跟在第1篇文章的屁股后面、打印在了同一张纸上”的情况。

How to ? 求解!

时间: 2024-10-02 05:00:57

Python操作Word【批量生成文章】的相关文章

Python操作Word批量生成文章

需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同也不好.大体看了一下,此类的记录大致分为四段.于是决定每段提供四种选项,每段从四选项里随机选一项,拼凑成四段文字,存成一个文件.而且要打印出来,所以准备生成一个140页的Word文档,每页一篇. 需要用到win32com模块(下载链接:http://sourceforge.net/projects/pywin32/files/), 通过COM让Python与Word建立连接.代码如下:

python操作word(改课文格式)【最终版】

python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这个python代码写出来了,这五天简直是废寝忘食(扯淡),每天查资料到半夜2点(其实是天太热,洗完澡又晾干就要一个多小时了,在这里吐槽下今年的夏天,2016年北京的7月份简直了,平生第一次长痱子,连去年都没用过的凉席都翻出来了). 好吧,扯得有点远了.因为工作需要,要批量修改一批rtf文件里的文字格

python操作word入门

1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/ 安装后重启操作系统,不然会报错找不到 win32api 2.简单使用 import win32com from win32com.client import Dis

Python操作es批量读取数据

1. Python连接elasticserach python连接elasticsearch有一下几种连接方式 pip3 instal elasticsearch from elasticsearch import Elasticsearch es = Elasticsearch() # 默认连接本地elasticsearch es = Elasticsearch(["127.0.0.1:9200"]) # 连接本地9200端口 es = Elasticsearch(["19

python操作word、ppt的详解

python使用win32com的心得 python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎封装了所有python下面的win32相关的操作,例如win32api,win32gui等等,可以说是比较齐全的了,下载地址可以自行百度获取.         主要是有个项目可能要用到ppt转换成视频的功能. 之后在想使用com操作excel还有word,ppt的时候,相信大部分人跟我一样,都是搜索py

用Python写一个批量生成账号的函数(用户控制数据长度、数据条数)

# 1.写一个函数,批量生成一些注册使用的账号:产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母.数字组成 import random,stringdef Users(num,len): result = [] a = string.ascii_lowercase b = string.ascii_uppercase c = string.digits d = string.ascii_letters count = 0

Python写一个批量生成账号的函数

批量生成账户信息,产生的账户由@sina.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母和数字组成. 1 def Users(num,len): # num产生多少条信息,len账号的长度 2 ''' 3 用交集来判断是否包含大小写字母 4 :param num: 生成几条数据 5 :param len: 账号的长度 6 :return: 7 ''' 8 results = [] # 存放结果的数组 9 uppers = set(string.

使用python操作word win32com

研究一下,利用win32com操作 word WORD中最重要的概念有几个:Application - 这个毫无疑问是我们的WORD应用程序Document - 这个就是一个打开的文档对象Range - 基本上所有对象都是有Range属性的,而这也为我们排版提供了极大的便利...Paragraph - 顾名思义,这个是段落的意思,也就是我们文档中的一个段内容(可以是文本.图片等).Section - 怎么才能插入一个新的页,然后在新页上开始输出内容...ParagraphFormat - 这个是

使用python操作word

有两种方式: 使用win32com 使用docx 1.使用win32com扩展包 只对windows平台有效 代码: # coding=utf-8 import win32com from win32com.client import Dispatch, DispatchEx word = Dispatch('Word.Application') # 打开word应用程序 # word = DispatchEx('Word.Application') #启动独立的进程 word.Visible