python自动化办公:word篇。职场高手不是梦。
工具包安裝
使用的庫:docx
 python 沒有自帶。需要安裝。
若運(yùn)行出現(xiàn):ModuleNotFoundError: No module named ‘exceptions’
則說明安裝失敗,需要另外安裝
安裝方法
 先卸載之前安裝失敗的docx
 1、下載 python_docx-0.8.6-py2.py3-none-any.whl 地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/
 2、在這個(gè)網(wǎng)頁的最下邊有python_docx-0.8.6-py2.py3-none-any.whl這個(gè)安裝包,可以CRTL+F 查一下python這個(gè)關(guān)鍵字
3、將下載好的.whl文件放到你的工程目錄下
 4、進(jìn)入工程目錄下, 命令行輸入pip install python_docx-0.8.6-py2.py3-none-any.whl 重新下載docx包,問題解決。
如圖 我的anaconda cmd 工程目錄是 C:\Users\Shineion
任務(wù)場景1
開始編寫
 業(yè)務(wù)邏輯
 
Document 文檔
 Pargraph段落
 run 句子
 
結(jié)果文件夾
 
 
在文檔中插入圖片和表格
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwufrom docx import Document#負(fù)責(zé)文檔 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT#對(duì)齊方式 from docx.shared import Pt#磅數(shù) from docx.oxml .ns import qn #中文格式 from docx.shared import Inches#修改圖片尺寸import time price=input("請(qǐng)輸入今日價(jià)格:") company_list=['客戶1','客戶2','客戶3','客戶4','客戶5','客戶6','客戶7','客戶8','客戶9'] today=time.strftime('%Y{Y}%m{m}%dze8trgl8bvbq',time.localtime()).format(Y='年',m='月',d='日')#把今日事件整理成2020-07-28 %Y %m %d 不能動(dòng)。-可以變 for i in company_list:document = Document() # 新建一個(gè)文檔# 對(duì)整個(gè)文檔設(shè)置字體document.styles['Normal'].font.name = u'微軟雅黑' # styles['Normal']默認(rèn)樣式document.styles['Normal'].font.size=Pt(14)document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'微軟雅黑') # 設(shè)置中文字體,這款軟件非國人開發(fā),對(duì)中文支持差,所以需要這行。# 設(shè)置文檔的基礎(chǔ)字體#加載圖片,并修改尺寸document.add_picture('圖片紅頭.png',width=Inches(6))#第一段內(nèi)容p1 = document.add_paragraph() # 加初始化第一個(gè)自然段p1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中對(duì)齊,默認(rèn)左對(duì)齊run1 = p1.add_run('關(guān)于下達(dá)%s產(chǎn)品價(jià)格的通知' % (today)) # 添加內(nèi)容run1.font.name = '微軟雅黑' # 設(shè)置標(biāo)題字體run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微軟雅黑') # 設(shè)置中文格式run1.font.size = Pt(21) # 設(shè)置標(biāo)題字大小run1.font.bold = True # 標(biāo)題加粗run1.space_after = Pt(5) # 段后距離5磅run1.space_before = Pt(5) # 距離段前距離5磅#第二段# 第二段 客戶稱呼p2 = document.add_paragraph() # 加初始化第二個(gè)自然段run2 = p2.add_run(i + ": ") # 客戶稱呼run2.font.name = '仿宋_GB2312'run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 設(shè)置中文格式run2.font.size = Pt(15) # 設(shè)置字大小run2.font.bold = True # 加粗# 第三段 正文p3 = document.add_paragraph() # 加初始化第三個(gè)自然段run3 = p3.add_run(' 根據(jù)公式安排,為提供優(yōu)質(zhì)客戶服務(wù),我單位擬定今日價(jià)格如下:。') # 正文run3.font.name = '仿宋_GB2312'run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 設(shè)置中文格式run3.font.size = Pt(15) # 設(shè)置字大小run3.font.bold = True # 加粗#添加表格table=document.add_table(rows=3,cols=3,style='Table Grid')#初始化表格,style為格式,自己查table.cell(0,0).merge(table.cell(0,2))#合共單元格,從(0,0) 合共到(0,2) 即第一行合并。選擇左上和右下兩格位置即可合并table_run1=table.cell(0,0).paragraphs[0].add_run('xx產(chǎn)品報(bào)價(jià)表')#paragraphs[0]這個(gè)段落是在表格里面table_run1.font.name=u'宋體'table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 設(shè)置中文格式table.cell(0, 0).paragraphs[0].alignment=WD_PARAGRAPH_ALIGNMENT.CENTER#第一行居中#使用表格默認(rèn)字體格式來添加內(nèi)容table.cell(1,0).text='日期'table.cell(1, 1).text = '價(jià)格'table.cell(1, 2).text = '備注'table.cell(2, 0).text = todaytable.cell(2, 1).text = str(price)table.cell(2, 2).text = ' '# 第四段 聯(lián)系方式p4 = document.add_paragraph() # 加初始化第四個(gè)自然段p4.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中對(duì)齊,默認(rèn)左對(duì)齊run4 = p4.add_run('聯(lián)系人:余總 電話:1999999999')run4.font.name = '仿宋_GB2312'run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 設(shè)置中文格式run4.font.size = Pt(15) # 設(shè)置字大小run4.font.bold = True # 加粗#插入分頁符 ,然后在第二頁插入廣告document.add_page_break()#插入分頁符p5 = document.add_paragraph() # 加初始化第五個(gè)自然段run5=p5.add_run('廣告所在地')document.save(r'C:\Users\Shineion\Desktop\測試\%s-價(jià)格通知.docx' % i) # 使用 客戶名+價(jià)格通知 命名第一頁
 
 第二頁
 
從word文檔中讀取內(nèi)容
讀取內(nèi)容
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwufrom docx import Document#負(fù)責(zé)文檔document=Document(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx')#文件路徑 文件格式為docx。 doc要出錯(cuò),問題我不清楚 all_paragraphs=document.paragraphs#所有段落 for paragraph in all_paragraphs:print(paragraph.text)#不要使用下面的,因?yàn)橐粋€(gè)段落里可能有多個(gè)run,這樣會(huì)打亂,人很難讀#for run in paragraph.runs:#print(run.text)讀取Word表格里的內(nèi)容
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwufrom docx import Document#負(fù)責(zé)文檔 document=Document(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx')#文件路徑 文件格式為docx。 doc要出錯(cuò),問題我不清楚 all_tables=document.tables#獲取所有表格 for table in all_tables:for row in table.rows:#每一行for cell in row.cells:#獲取單元格print(cell.text)原文文件:
 
 結(jié)果:
 
讀取含有文字和表格的Word
# @Author: yudengwu import zipfile word=zipfile.ZipFile(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx') xml=word.read("word/document.xml").decode('utf-8')#讀取文檔前端頁面內(nèi)容發(fā)現(xiàn)存在文字的部分 前面有<w:t> 這個(gè)符號(hào)
 
以<w:t> 分割字符
xml_list=xml.split('<w:t>')以下為正則方法提取文本
 正則教程
 python :re模塊基本用法
所有代碼;
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu import zipfileword=zipfile.ZipFile(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx')xml=word.read("word/document.xml").decode('utf-8')#讀取文檔前端頁面內(nèi)容xml_list=xml.split('<w:t>')text_list=[] for i in xml_list:if i.find('</w:t>')+1:#i.find('<w:t>')值為1和-1,-1為沒找到。+1是為了變成0和正數(shù),即true,falsetext_list.append(i[:i.find('</w:t>')])else:pass print(text_list)word格式套用:創(chuàng)造模板
適合快速寫短文檔
 #傳統(tǒng)的做法是一段段設(shè)置段落,add_run等,如果段落較多,設(shè)置一個(gè)函數(shù) 即創(chuàng)造一個(gè)模板
我只寫啦三段內(nèi)容。
結(jié)果:
 
 
word格式套用:套用模板
適合快速寫長的文檔,
 自己可以先在word里做好模板,
 因此不再需要再代碼定義文檔格式。
原始文件 暴露學(xué)校啦。
 博主沒本事,讀不了名校。
 
結(jié)果:
 
Word轉(zhuǎn)PDF
她來啦
使用的庫 win32com
 安裝指令 pip install pywin32
遍歷一個(gè)文件夾,將文件夾的word文檔全轉(zhuǎn)換成PDF
這段代碼有借鑒他人
from win32com.client import Dispatch from os import walkwdFormatPDF = 17def doc2pdf(input_file):word = Dispatch('Word.Application')doc = word.Documents.Open(input_file)doc.SaveAs(input_file.replace(".docx", ".pdf"), FileFormat=wdFormatPDF)doc.Close()word.Quit()if __name__ == "__main__":doc_files = []directory = "C:\Users\Shineion\Desktop\測試"for root, dirs, filenames in walk(directory):for file in filenames:if file.endswith(".doc") or file.endswith(".docx"):doc2pdf(str(root + "\\" + file))上篇博文講解了表格,有興趣可以翻下查看下。
 python自動(dòng)化辦公:excel篇,從此做表不加班。
 下一篇博客鏈接:
 python自動(dòng)化辦公:郵件篇 (定時(shí)郵件問候女票so easy)
電氣專業(yè)的計(jì)算機(jī)萌新,寫博文不容易。如果你覺得本文對(duì)你有用,請(qǐng)點(diǎn)個(gè)贊支持下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的python自动化办公:word篇。职场高手不是梦。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: pyqt5讲解4:QDialog,QMe
- 下一篇: 未激活信用卡注销流程
