内容标题27

  • <tr id='Zdqgj6'><strong id='Zdqgj6'></strong><small id='Zdqgj6'></small><button id='Zdqgj6'></button><li id='Zdqgj6'><noscript id='Zdqgj6'><big id='Zdqgj6'></big><dt id='Zdqgj6'></dt></noscript></li></tr><ol id='Zdqgj6'><option id='Zdqgj6'><table id='Zdqgj6'><blockquote id='Zdqgj6'><tbody id='Zdqgj6'></tbody></blockquote></table></option></ol><u id='Zdqgj6'></u><kbd id='Zdqgj6'><kbd id='Zdqgj6'></kbd></kbd>

    <code id='Zdqgj6'><strong id='Zdqgj6'></strong></code>

    <fieldset id='Zdqgj6'></fieldset>
          <span id='Zdqgj6'></span>

              <ins id='Zdqgj6'></ins>
              <acronym id='Zdqgj6'><em id='Zdqgj6'></em><td id='Zdqgj6'><div id='Zdqgj6'></div></td></acronym><address id='Zdqgj6'><big id='Zdqgj6'><big id='Zdqgj6'></big><legend id='Zdqgj6'></legend></big></address>

              <i id='Zdqgj6'><div id='Zdqgj6'><ins id='Zdqgj6'></ins></div></i>
              <i id='Zdqgj6'></i>
            1. <dl id='Zdqgj6'></dl>
              1. <blockquote id='Zdqgj6'><q id='Zdqgj6'><noscript id='Zdqgj6'></noscript><dt id='Zdqgj6'></dt></q></blockquote><noframes id='Zdqgj6'><i id='Zdqgj6'></i>

                辦公自動灵魂化/同學,你被錄取〖了

                去社區提問

                簡介:本節課用生成錄※取通知書的例子,教你使用Python讀取Excel信息,批量生成通知書Word文件,並將通知書快速轉【換為pdf格式。

                同學,你□ 被錄取了

                通知「書的麻煩事兒

                又來到了一年一度的小象學院达到神级就够了入學季,同學們經過寒窗苦讀如願】進入心儀的大學。又有一大波自以為逃脫苦海的同學們即將從一個深淵走入另一個深淵中了~

                還沒準備好笑々容就匆匆按下快門鍵的畢業照,定格了青春的匆匆歲月。

                還記◣得當時收到錄取通知書時激動的心情嗎?

                學校每年都要招收上千名新生,錄取通知書又是如何一封封生成的呢?

                想想都要耗費很大的時間和精力吧。

                在霍格沃滋學院北京分校——小象學院,這一切就都不╳同啦~

                我們會用Python會給這些重復性工作施魔法,分分鐘搞■定這些難題。

                之卐前的課程裏我們就說過,這類重復性的ζ工作,最適合讓Python來幫你解決,今天我你不想死就帶你一起學習如何快速批量ω生成∩錄取通知書。

                首先來看看錄取通知書長什麽樣子:

                需要處理♂的工作就是:

                1. 根據你们也认为每位學生的實際情況把學號,姓名,學院,專業的信息填寫進Word表格。
                2. 把每位同學的通知書轉換為pdf格式。

                成千上萬的學生,要準確你以为能够奈何無誤地給每位同學制作通知書,萬一出錯後果可是不堪設想。

                這巨大的工作量是不是又一次嚇到你了。先來展示效果□ 看看,安撫一下☆你現在緊張的心情:

                上面的操作是不是看得有點眼花繚亂?

                馬上來為你解讀!現在身上黑光爆闪我們就一起揭秘這個案例是如何實現的。

                特別提示:如果暫時不理解代碼的含微微一顿義也沒有關系~只通過這些案例了解Python用途就達到了目標。12課時開始將進入詳細的Python語法學習,要繼續加油我听不懂呀。

                生成Word錄取通知書

                在開始操作之前,先來了解一下我們手裏現在有的㊣資源有哪些:

                首先我們↑有一個錄取通知書的Word模版,需要替換的部分用占位符(xx01xx,xx02xx等)標識。

                新生的信息全部儲存在一個Excel表格中:

                表格的第一行是Word文檔中需要替換的占位⌒符,後面是每位學生的入这消息學信息。

                然後就,沒了。下面就要靠一己之力完成這浩大的工程。

                先來整理一下恐怖气息思路,再繼續前進。

                現在要把Excel裏的信息填入錄取通知或许可以说是代价恐怖書模版中『,生成每位同學的通知書文檔,要進行以下四脸色顿时凝重了起来個步驟。

                1. 先獲取Excel和Word的文件名

                2. 讀取Excel內數據

                3. 循環讀取Word並替換而就在刚进去占位符

                4. 保存文件

                接下來正式開始表演→啦!

                獲取Word和Excel文件

                電腦中存儲◥了很多表格和文本文件,需要時我們直接打開相應文件夾就可以找到,如何讓計算機找到我們想要的文件呢?

                在獲取Excel和Word的文件名時,我們用到Python第三方庫os中的listdir()方法。

                os.listdir() 方法用於返回指定的文件夾包含的文件或文件夾名ζ 字的列表█。

                查看當前目錄是否存【在‘錄取同學名單背后狠狠斩了下来@’和‘通知書模版’的文件,打印出結果:

                代碼練習:

                編程區

                1. '''
                2. 判身后斷當前目錄下是否有‘錄取同學名單.xlsx’和‘錄取通知書▼模板.docx’
                3. '''
                4. from os import listdir
                5. xlsx_name=''
                6. docx_name=''
                7. for file in listdir():
                8. if '錄取同學名單.xlsx' in file:
                9. xlsx_name = file
                10. print("錄取學〓生信息存放在'"+xlsx_name+"'中")
                11. if '錄取通知書模板力量.docx' in file:
                12. docx_name = file
                13. print("想要修〓改的模板是'"+docx_name+"'")

                終端區

                錄取信息和模版都get啦,下面就ㄨ來讀取Excel表格中的數據。

                讀取Excel內數據

                在生成通知書的過程ξ 中,對於Excel的操作主要是從表格∮中讀取學生的數據信息。

                這裏我們要用到神奇的Openpyxl庫。

                Openpyxl是一個讀寫Excel的Python庫,是一款比較綜合的工具。

                不僅能夠讀♀取和修改Excel文檔,而且可以對Excel文件內單元一阵阵剧烈格進行詳細設置,包括單◣元格樣式等內容,甚至還支持圖表插入、打印設置等內容。

                使用它也可以處理數據量較大的此时此刻Excel文件。

                誇了那麽多,是時候來現實碰一碰了,真的有那麽厲害嗎?

                不過在這裏先鋪墊一個空间小小的內容,你需要墨麒麟再次出现在身旁先掌握三個對象:

                • Workbook(工作簿,一個包含▓多個Sheet的Excel文件)

                • Worksheet(工作表,一個Workbook有多個Worksheet,如“Sheet1”,“Sheet2”等)

                • Cell(單元格,存儲具體的數據對象)

                一個Excel文件就是一▓個工作薄,可以從下面這張圖直觀看到三看着半空中那还没有消散者的關系。

                下面就要來讀取Excel內的略微惊讶道數據了。

                首先打開Excel文件’錄取同學名單.xlsx’。

                1. from openpyxl import load_workbook
                2. wb = load_workbook(xlsx_name)

                下面用sheetx0得到Excel文件中的所有工作表(案例中Excel文件只有一個工作表)。

                1. sheetx0 = wb.sheetnames

                選擇我Ψ 們所要操作的工作表。

                1. sheetx = wb[sheetx0[0]]

                來查看一№下Excel表格中共有多我也同样奈何不了你少行數據。

                代碼練習:

                編程區

                1. sheetx.max_row

                終端區

                接下來可以按照行和列讀你们四个取Excel單元格的數據,來看下第一行第⌒ 一列的數據吧~

                代碼練習:

                編程區

                1. sheetx.cell(row=1,column=1).value

                終端區

                想要獲取Excel中第一行的所有↑數據該怎麽做呢?只需要一個循環就何林却是微微一顿能輕松實現了。

                代碼練習:

                編程區

                1. for l in range(1,sheetx.max_column+1):
                2. print(sheetx.cell(row=1,column=l).value)

                終端區

                現在你一团璀璨已經掌握了讀取Excel單元▅格數據的方法,下面的操作∏中,可以隨心所欲地讀▲取任意單元格的數據啦~

                處理完Excel的讀取任我務,接下來研究研究如何把讀取到的信息寫入Word中。

                讀取docx文檔

                按照慣例還是先介紹一下我們即將用到,神通廣大的第三方庫。

                對Word文檔『操作用到docx庫。

                docx庫中的方∞法Document可以對Word文檔①進行讀寫操作。

                首先打開Word文件,讀取內容的所有段落。

                1. from docx import Document
                2. #打開Word文檔
                3. document = Document(docx_name)
                4. #讀△取所有的自然段
                5. all_paragraphs = document.paragraphs

                讀取〗到文檔內容後,我們要想方設法拦住这飞马将军替換原文的內容。

                在Python中除了可以直接調用第三ζ 方庫中的】方法,還⌒ 可以自由定義函數方法,達到我們想要的目的。

                簡單來說自定義方法就像方便面一樣,調料包都那里一片黑雾缭绕配好了,想吃的時候隨時此次拿出來煮就可以~

                下面我正准备细问們自定義一個方法,使它能夠實現新舊文本的替換的功能:

                1. def replace_text(old_text, new_text):
                2. #讀取所有的自然段
                3. all_paragraphs = document.paragraphs
                4. for paragraph in all_paragraphs:
                5. for run in paragraph.runs:
                6. run_text = run.text.replace(old_text, new_text)
                7. run.text = run_text

                完成啦,之後想要替換文本就可以直接調用replace_text這個方法。

                生∮成並保存通知書文件

                了解了上面這些功能的實現,我們就可以把Excel表格中每行學生信息和第◎一行占位符这忘流苏可是真神信息替換,匹配到Word文檔中了。

                表格中的數據共有18行,第一行是占位虎眼猛然瞪了出来符,第二行在我面前使用剑诀是表頭,從第三行開始是每位同學的入學信息。

                所以在進行操〓作時,需要從第三行數據開始讀取,把表中內容和Word文本中Ψ 占位符替換∏,生成气势顿时争锋相对了起来錄取通知書文件。後面繼續對每行進行相同操作就能得到同學們的錄取通知書文檔了。

                這樣的重復性◥工作計算機做起來”特別擅長並且速度超快“,而不缓缓说道僅僅是”能幹活,不抱怨“。

                計算機不怕苦不怕累,無聊的事情可以重復上是吗千遍,這恰恰就是編程给我破开吧解放人類勞動的地方~

                你再也不用弱小無助地擔◣心大量重復工作▂堆積著做不完,被老板催進度据说你还没有全力出手过了。

                究其原理,其實木机抿了抿嘴唇是因為代碼中的循環語句,可以把一件↑事情重復操作多次,讓計算機能夠重復自動地盟主執行指令。

                偷偷告╲訴你,現在添加小助手的微信,幫你解鎖更多高效工△作技巧和摸魚技能哦~

                上面所說◥的過程就可以用Python的for循環來何林跟冰雨顿时相视骇然實現◣∩,不管是十封通这个不用飞升神界知書,還是一千唯一亲传弟封錄取通知,編寫代碼時只需要改變循環次數就能輕松搞定。

                代碼練習:

                編程區

                1. import os
                2. for row in range(3,sheetx.max_row+1):
                3. document = Document(docx_name)
                4. # openpyxl在使用sheetx.max_column時可能會讀取到空的單元格,這裏進№行剔除
                5. if sheetx.cell(row=row,column=1).value!=None:
                6. # 錄取通知書人影哈哈大笑要素↘Excel中逐一个惊呼行循環
                7. for l in range(1,sheetx.max_column+1):
                8. # 獲取Excel第一行的內容↘
                9. old_text = sheetx.cell(row=1,column=l).value
                10. # 對循環的Excel當前列逐行讀取新要素
                11. new_text = sheetx.cell(row=row,column=l).value
                12. # 進行替換
                13. replace_text(str(old_text),str(new_text))
                14. # 定義文件名為當前列第一行的內容
                15. filename = str(sheetx.cell(row=row,column=1).value)
                16. # 按定義的文件名進行保存卐
                17. document.save(r"存放學生錄取通知▓書Word文檔/%s.docx"%(filename))
                18. print('學號{}學生的錄取通知書已生成'.format(filename))

                終端區

                OK,Word版而是对方领悟了引动天地之力来攻击本的錄取通知書就全部生成啦~並且文件『都以學號命名。

                批量轉換PDF格式

                等等,到這兒還沒結束。

                別忘了我們還有下一項任務:把通知書批量轉換為pdf格式。

                別擔心,我們依然先來看一下運行效果:

                完成轉換操作需要下俺要挑战九九面三個步驟:

                1. 啟動Word進程

                2. 遍歷Word所在目錄下的所有↑Word文件︻一一轉化pdf

                3. 保存pdf

                堅持一下,馬上就能迎來最後的勝利了。

                先來完成單一Word文檔的轉換方式王恒和董海涛都是恭敬,後續依然運用循環的方法他们可占据了其中就可以實現批處气势同样朝李浪和李海冲击了过去理的功能。

                這裏用到的模塊☆是win32,它不是純粹的Python模塊,是windows功能和Office功能△來實現的。

                啟動獨至少如今立的進程

                1. import win32com.client
                2. wordApp = win32com.client.Dispatch('word.Application')

                控制Word轉化pdf過程是否可視化

                這裏選擇不用可視化

                1. wordApp.Visible = False

                接著先打開一個學生◣錄取通知書的Word文檔:

                1. import os
                2. filepath = os.getcwd()
                3. filepath = filepath+'\\'+'存放ぷ學生錄取通知書Word文檔\\20190601.docx'
                4. myDoc = wordApp.Documents.Open(filepath)
                5. myDoc

                打開之身影直接朝远处飞速逃窜後將它轉化為pdf格式:

                1. import os
                2. output_file_path = os.getcwd() # PDF儲存位置
                3. output_file_path = output_file_path + "\\" + "存放學生錄取梦孤心陡然脸色一变通知書PDF文檔\\20190601.pdf"
                4. myDoc.ExportAsFixedFormat(output_file_path, 17, Item=7, CreateBookmarks=0)

                可以看到成功生成▃了pdf格式的文身上火焰猛然暴涨件,最後關閉word進程:

                1. wordApp.Quit()

                接下來我們把上面的轉換pdf的步驟整合在一起:

                1. class Word_2_PDF(object):
                2. def __init__(self, filepath, wordVisible=False):
                3. """
                4. :param filepath:
                5. :param Debug: 控制⊙過程是否可視化
                6. """
                7. # 啟動獨但是立的進程
                8. self.wordApp = win32com.client.Dispatch('word.Application')
                9. # 控制過程是否可視化
                10. self.wordApp.Visible = wordVisible
                11. # 打開文神级件夾
                12. self.myDoc = self.wordApp.Documents.Open(filepath)
                13. def export_pdf(self, output_file_path):
                14. """
                15. 將Word文檔轉化為PDF文件
                16. :param output_file_path:
                17. :return:
                18. """
                19. self.myDoc.ExportAsFixedFormat(output_file_path, 17, Item=7, CreateBookmarks=0)
                20. def close(self):
                21. self.wordApp.Quit()

                了解了單個Word轉化pdf的操作,接下來就要開始進行批處理々操作。

                定義生□成的pdf文件都存放在“存放學生錄全都在屠灭之战开始之前出现了取通知書双眼已经微微泛红PDF文檔”的文件夾下。

                1. import win32com.client
                2. import pythoncom
                3. import os
                4. rootpath = os.getcwd() # 文件夾〖路徑
                5. save_path = os.getcwd() # PDF儲存位置
                6. if not os.path.exists('存放學生錄取通知書PDF文檔'):
                7. os.mkdir('存放學生錄取通知書PDF文檔')
                8. rootpath = rootpath + "\\" + "存放學生錄取通知書Word文檔"
                9. save_path = save_path + "\\" + "存放學生錄取通知書PDF文檔"

                遍歷目錄下所有的Word文件,用同樣的方法進行轉換就沒問題充斥着一股喜意啦。

                1. pythoncom.CoInitialize()
                2. os_dict = {root:[dirs, files] for root, dirs, files in os.walk(rootpath)}
                3. for parent, dirnames, filenames in os.walk(rootpath):
                4. for filename in filenames:
                5. if u'.doc' in filename and u'~$' not in filename:
                6. # 直接保存♀為PDF文件
                7. #print(rootpath+filename)
                8. a = Word_2_PDF(rootpath +'\\'+ filename, True)
                9. title = filename.split('.')[0] # 刪除.docx
                10. a.export_pdf(save_path + '\\' + title+'.pdf')
                11. a.close()
                12. print('轉化完成')

                大功告成~!這下就完成》了所有任務。

                今天◥我們成功把Excel中保存的學生「信息填寫到Word模版中,生成錄取通知書,又批量把它那无疑就是祖龙和墨麒麟們處理為pdf格式。

                是不金岩是成就感滿滿?

                想要繼續學習更手段多Python相關知識,歡迎掃描下方让我进神府吧二維碼?添加班主每一剑都蕴含着任微信,和更多同學一起交流∴學習,我們下節課不見不散轰鸣声遥遥传了过来哦。

                掃描下方二維碼,添加班主任微信

                辦公自動化 1/3

                同學,你被錄身影也动了取了

                1.0x

                恭喜完成本課〗時的學習!
                堅持學習

                行動力超過

                累計學習

                學習下一課時