Python3--自動化辦公


主要記一下Python對辦公文件的簡單處理,如word、excel、pdf、csv及ppt。因為內容比較多,不細究原理了,直接寫應用吧~

Word

  1. 寫入Word文件。注:使用了win32com模塊,只能在win系統下使用...
    import win32com
    import win32com.client
    import os
    def makeWord(fileName,name):
        # 打開word應用程序
        word=win32com.client.Dispatch("Word.Application")
        #讓文檔可見
        word.Visible=True
        #創建文檔
        doc=word.Documents.Add()
        #寫內容,從頭開始
        r=doc.Range(0,0)
        #開始插入內容
        r.InsertAfter("有人喜歡小溪,是因為沒見過大海。")
        r.InsertAfter("我看過銀河,可我只愛一粒星--"+name)
        #存儲文件
        doc.SaveAs(path)
        #關閉文件 
        doc.Close()
        #退出word
        word.Quit()
    
    
    names=["張三","李四","王五"]
    for name in names:
        #獲取當前絕對路徑來存放文件
        path=os.path.join(os.getcwd(),name)
        makeWord(path,name)

     

     

     

  2. 讀取Word文件
    import win32com
    import win32com.client
    import os
    
    def readWord(path):
        #調用系統word功能,可以處理doc和docx文件
        mw=win32com.client.Dispatch("Word.Application")
        #打開文件
        doc=mw.Documents.Open(path)
        for par in doc.Paragraphs:
            line=par.Range.Text
            print(line)
        #關閉
        doc.Close()
        #退出word
        mw.Quit()
    
    
    path = os.path.join(os.getcwd(),'張三.docx')
    readWord(path)
    #有人喜歡小溪,是因為沒見過大海。我看過銀河,可我只愛一粒星--張三

     

Excel

  1. 寫入xls文件  注:這里使用了pyexcel_xls,需要另行安裝(pip install pyexcel_xls)
    #有序字典
    from collections import OrderedDict
    from pyexcel_xls import save_data
    
    
    def makeExce(path,data):
        #有序字典
        dic = OrderedDict()
        for sheetName,sheetValue in data.items():
            d = {}
            d[sheetName] = sheetValue
            #此格式的有序字典,sheetName為子表名,sheetValue為表中的數據
            dic.update(d)
        #保存
        save_data(path,dic)
    
    
    path = r"C:\Users\Administrator\Desktop\make.xls"
    #只能寫xls格式的excel文件
    makeExce(path,{"表1":[[1,2,3],[4,5,6]],"表2":[[11,22,33],[44,55,66]]})

     

  2. 讀取xls 或 xlsx文件
    from collections import OrderedDict
    from pyexcel_xls import get_data
    
    
    def readXls(path):
        dic=OrderedDict()
        #抓取數據
        xdata=get_data(path)
        for sheet in xdata:
            dic[sheet]=xdata[sheet]
        #返回的是有序字典
        return dic
    
    
    path=r"C:\Users\Administrator\Desktop\make.xls"
    dic=readXls(path)
    print(dic['表1'][1])
    #[4, 5, 6]

     

PPT

  1. 寫入PPT 
    import win32com
    import win32com.client
    
    
    def makePpt(path):
        ppt = win32com.client.Dispatch("PowerPoint.Application")
        # 讓文檔可見
        ppt.Visible = True
        #增加一個文件
        pptFile = ppt.Presentations.Add()
    
        #創建頁 參數1為頁數(從1開始)參數2為類型(主題)
        page1 = pptFile.Slides.Add(1,1)
        t1 = page1.Shapes[0].TextFrame.TextRange
        t1.Text = "sunck"
        t2 = page1.Shapes[1].TextFrame.TextRange
        t2.Text = "sunck is a good man"
        #保存
        pptFile.SaveAs(path)
        pptFile.close()
        ppt.Quit()
    
    
    path=r"C:\Users\Administrator\Desktop\make.ppt"
    makePpt(path) 

     

 

CSV

  1. 寫csv文件
    import csv
    
    
    def writeCsv(path,data):
      #使用這個newline=""可以解決win下自動添加空行的問題
        with open(path, "w",newline="") as f:
            writer = csv.writer(f)
            for row in data:#整行寫入,這里是二維列表,一個一維列表寫為一行
                writer.writerow(row)
    
    
    path = r"C:\Users\Administrator\Desktop\make.csv"
    data = [['admin','admin','admin'],['byadmin','byadmin','byadmin'],['byadmin','byadmin','byadmin']]
    writeCsv(path,data)

     

     

  2. 讀取csv文件

      
    import csv
    
    
    def readCsv(path):
        contentList = []
        with open(path,"r") as f:
            allFileInfo = csv.reader(f)
    
            for row in allFileInfo:
                contentList.append(row)
        return contentList
    path = r"C:\Users\Administrator\Desktop\make.csv"
    print(readCsv(path)) 
    #[['admin', 'admin', 'admin'], ['byadmin', 'byadmin', 'byadmin'], ['byadmin', 'byadmin', 'byadmin']]

     

PDF

  1. 讀PDF  PDF轉TXT需安裝pdfminer3k(pip install pdfminer3k)
    import sys
    import importlib
    importlib.reload(sys)
    
    from pdfminer.pdfparser import PDFParser,PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LTTextBoxHorizontal,LAParams
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    
    
    def readPdf(path,toPath):
        f=open(path,"rb")
        #創建一個pdf文檔分析器
        parser=PDFParser(f)
        #創建一個PDF文檔
        pdfFile=PDFDocument()
    
        #連接分析器與文檔對象
        parser.set_document(pdfFile)
        pdfFile.set_parser(parser)
    
        #提供初始化密碼
        pdfFile.initialize()
    
        #檢測文檔是否提供txt轉換
        if not pdfFile.is_extractable:
            raise PDFTextExtractionNotAllowed
        else:
            #解析數據
            #數據管理器
            manager=PDFResourceManager()
            #創建一個PDF設備的對象
            laparams=LAParams()
            device=PDFPageAggregator(manager,laparams=laparams)
            #解析器對象
            interpreter=PDFPageInterpreter(manager,device)
            #開始循環處理,每次處理一頁
            for page in pdfFile.get_pages():
                interpreter.process_page(page)
                #處理圖層
                layout=device.get_result()
                for x in layout:
                    if (isinstance(x,LTTextBoxHorizontal)):
                        with open(toPath,"a") as f:
                            str=x.get_text()
                            #print(str)
                            f.write(str+"\n")
    
    
    
    
    path=r"C:\Users\Administrator\Desktop\英語語法.pdf"
    toPath=r"C:\Users\Administrator\Desktop\res.txt"
    #從pdf文件提取字符保存到txt文件
    readPdf(path,toPath)

     

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM