Python操作Word批量產生文章

來源:互聯網
上載者:User

標籤:

  需要做一些會議記錄。總共有多少呢?五個地點x7個月份x每月4篇=140篇。雖然不很重要,但是140篇記錄完全雷同也不好。大體看了一下,此類的記錄大致分為四段。於是決定每段提供四種選項,每段從四選項裡隨機選一項,拼湊成四段文字,存成一個檔案。而且要列印出來,所以準備產生一個140頁的Word文檔,每頁一篇。

  需要用到win32com模組(下載連結:http://sourceforge.net/projects/pywin32/files/),

通過COM讓Python與Word建立串連。代碼如下:

# -*- coding: cp936 -*-#匯入隨機數模組import random#匯入win32com模組,用來操作Wordimport 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.docdoc.SaveAs(r‘D:\d.doc‘)#退出操作doc.Close()w.Quit()

最終結果

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

 

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

寫在最後:

  由於寫的比較倉促,所以有些細節問題沒能解決,花了20分鐘手動調整了一下。覺得有些屈辱。問題如下:

1.本文是三號字型,所以在range處的字型大小設定了“16”。想讓題目是二號字型、置中顯示。

2.如何在第四段寫完之後,自動插入一個分頁符?這樣每篇文章列印出來的都有獨立的頁,不至於出現“第2篇文章的標題緊跟在第1篇文章的屁股後面、列印在了同一張紙上”的情況。

How to ? 求解!

Python操作Word批量產生文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.