python自动化办公:word篇。职场高手不是梦。
工具包安裝
使用的庫:docx
python 沒有自帶。需要安裝。
若運行出現: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、在這個網頁的最下邊有python_docx-0.8.6-py2.py3-none-any.whl這個安裝包,可以CRTL+F 查一下python這個關鍵字
3、將下載好的.whl文件放到你的工程目錄下
4、進入工程目錄下, 命令行輸入pip install python_docx-0.8.6-py2.py3-none-any.whl 重新下載docx包,問題解決。
如圖 我的anaconda cmd 工程目錄是 C:\Users\Shineion
任務場景1
開始編寫
業務邏輯
Document 文檔
Pargraph段落
run 句子
結果文件夾
在文檔中插入圖片和表格
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwufrom docx import Document#負責文檔 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT#對齊方式 from docx.shared import Pt#磅數 from docx.oxml .ns import qn #中文格式 from docx.shared import Inches#修改圖片尺寸import time price=input("請輸入今日價格:") company_list=['客戶1','客戶2','客戶3','客戶4','客戶5','客戶6','客戶7','客戶8','客戶9'] today=time.strftime('%Y{Y}%m{m}%dvt6mr5x',time.localtime()).format(Y='年',m='月',d='日')#把今日事件整理成2020-07-28 %Y %m %d 不能動。-可以變 for i in company_list:document = Document() # 新建一個文檔# 對整個文檔設置字體document.styles['Normal'].font.name = u'微軟雅黑' # styles['Normal']默認樣式document.styles['Normal'].font.size=Pt(14)document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'微軟雅黑') # 設置中文字體,這款軟件非國人開發,對中文支持差,所以需要這行。# 設置文檔的基礎字體#加載圖片,并修改尺寸document.add_picture('圖片紅頭.png',width=Inches(6))#第一段內容p1 = document.add_paragraph() # 加初始化第一個自然段p1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中對齊,默認左對齊run1 = p1.add_run('關于下達%s產品價格的通知' % (today)) # 添加內容run1.font.name = '微軟雅黑' # 設置標題字體run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微軟雅黑') # 設置中文格式run1.font.size = Pt(21) # 設置標題字大小run1.font.bold = True # 標題加粗run1.space_after = Pt(5) # 段后距離5磅run1.space_before = Pt(5) # 距離段前距離5磅#第二段# 第二段 客戶稱呼p2 = document.add_paragraph() # 加初始化第二個自然段run2 = p2.add_run(i + ": ") # 客戶稱呼run2.font.name = '仿宋_GB2312'run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 設置中文格式run2.font.size = Pt(15) # 設置字大小run2.font.bold = True # 加粗# 第三段 正文p3 = document.add_paragraph() # 加初始化第三個自然段run3 = p3.add_run(' 根據公式安排,為提供優質客戶服務,我單位擬定今日價格如下:。') # 正文run3.font.name = '仿宋_GB2312'run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 設置中文格式run3.font.size = Pt(15) # 設置字大小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產品報價表')#paragraphs[0]這個段落是在表格里面table_run1.font.name=u'宋體'table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 設置中文格式table.cell(0, 0).paragraphs[0].alignment=WD_PARAGRAPH_ALIGNMENT.CENTER#第一行居中#使用表格默認字體格式來添加內容table.cell(1,0).text='日期'table.cell(1, 1).text = '價格'table.cell(1, 2).text = '備注'table.cell(2, 0).text = todaytable.cell(2, 1).text = str(price)table.cell(2, 2).text = ' '# 第四段 聯系方式p4 = document.add_paragraph() # 加初始化第四個自然段p4.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中對齊,默認左對齊run4 = p4.add_run('聯系人:余總 電話:1999999999')run4.font.name = '仿宋_GB2312'run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 設置中文格式run4.font.size = Pt(15) # 設置字大小run4.font.bold = True # 加粗#插入分頁符 ,然后在第二頁插入廣告document.add_page_break()#插入分頁符p5 = document.add_paragraph() # 加初始化第五個自然段run5=p5.add_run('廣告所在地')document.save(r'C:\Users\Shineion\Desktop\測試\%s-價格通知.docx' % i) # 使用 客戶名+價格通知 命名第一頁
第二頁
從word文檔中讀取內容
讀取內容
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwufrom docx import Document#負責文檔document=Document(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx')#文件路徑 文件格式為docx。 doc要出錯,問題我不清楚 all_paragraphs=document.paragraphs#所有段落 for paragraph in all_paragraphs:print(paragraph.text)#不要使用下面的,因為一個段落里可能有多個run,這樣會打亂,人很難讀#for run in paragraph.runs:#print(run.text)讀取Word表格里的內容
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwufrom docx import Document#負責文檔 document=Document(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx')#文件路徑 文件格式為docx。 doc要出錯,問題我不清楚 all_tables=document.tables#獲取所有表格 for table in all_tables:for row in table.rows:#每一行for cell in row.cells:#獲取單元格print(cell.text)原文文件:
結果:
讀取含有文字和表格的Word
# @Author: yudengwu import zipfile word=zipfile.ZipFile(r'C:\Users\Shineion\Desktop\新建 DOCX 文檔.docx') xml=word.read("word/document.xml").decode('utf-8')#讀取文檔前端頁面內容發現存在文字的部分 前面有<w:t> 這個符號
以<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')#讀取文檔前端頁面內容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和正數,即true,falsetext_list.append(i[:i.find('</w:t>')])else:pass print(text_list)word格式套用:創造模板
適合快速寫短文檔
#傳統的做法是一段段設置段落,add_run等,如果段落較多,設置一個函數 即創造一個模板
我只寫啦三段內容。
結果:
word格式套用:套用模板
適合快速寫長的文檔,
自己可以先在word里做好模板,
因此不再需要再代碼定義文檔格式。
原始文件 暴露學校啦。
博主沒本事,讀不了名校。
結果:
Word轉PDF
她來啦
使用的庫 win32com
安裝指令 pip install pywin32
遍歷一個文件夾,將文件夾的word文檔全轉換成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自動化辦公:excel篇,從此做表不加班。
下一篇博客鏈接:
python自動化辦公:郵件篇 (定時郵件問候女票so easy)
電氣專業的計算機萌新,寫博文不容易。如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結
以上是生活随笔為你收集整理的python自动化办公:word篇。职场高手不是梦。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pyqt5讲解4:QDialog,QMe
- 下一篇: 未激活信用卡注销流程