1. 程式人生 > >Python3.4對Excel和Word的操作----win32com

Python3.4對Excel和Word的操作----win32com

在python的應用過程中,有時候需要有一些記錄輸出,表格和文件是比較實用、大眾和清晰的工具
工具:
    Python3.4
    win32com模組

以下貼程式碼

#-*- encoding: utf8 -*-
import win32com.client
import os
import time

class RemoteExcel():
    """對excel表格的操作

    """
    def __init__(self, filename=None):
        """初始化函式

        Args:
            filename: 要進行操作的檔名,如果存在此檔案則開啟,不存在則新建
                        此檔名一般包含路徑

        """
self.xlApp=win32com.client.Dispatch('Excel.Application') self.xlApp.Visible=0 self.xlApp.DisplayAlerts=0 #後臺執行,不顯示,不警告 if filename: self.filename=filename if os.path.exists(self.filename): self.xlBook=self.xlApp.Workbooks.Open(filename) else
: self.xlBook = self.xlApp.Workbooks.Add() #建立新的Excel檔案 self.xlBook.SaveAs(self.filename) else: self.xlBook=self.xlApp.Workbooks.Add() self.filename='' def get_cell(self, row, col, sheet=None): """讀取單元格的內容 Args: row: 行 col: 列 sheet: 表格名(不是檔名) """
if sheet: sht = self.xlBook.Worksheets(sheet) else: sht = self.xlApp.ActiveSheet return sht.Cells(row, col).Value def set_cell(self, sheet, row, col, value): """向表格單元格寫入 Args: sheet: 表格名(不是檔名) row: 行 col: 列 value: 定入內容 """ try: sht = self.xlBook.Worksheets(sheet) except: self.new_sheet(sheet) sht = self.xlBook.Worksheets(sheet) sht.Cells(row, col).Value = value def save(self, newfilename=None): """儲存表格""" if newfilename: self.filename = newfilename self.xlBook.SaveAs(self.filename) else: self.xlBook.Save() def close(self): """儲存表格、關閉表格,結束操作""" self.save() self.xlBook.Close(SaveChanges=0) del self.xlApp def new_sheet(self, newSheetName): """新建一個新表格""" sheet = self.xlBook.Worksheets.Add() sheet.Name = newSheetName sheet.Activate() def active_sheet(self): return self.xlApp.ActiveSheet class RemoteWord(): def __init__(self, filename=None): self.xlApp=win32com.client.DispatchEx('Word.Application') self.xlApp.Visible=0 self.xlApp.DisplayAlerts=0 #後臺執行,不顯示,不警告 if filename: self.filename=filename if os.path.exists(self.filename): self.doc=self.xlApp.Documents.Open(filename) else: self.doc = self.xlApp.Documents.Add() #建立新的文件 self.doc.SaveAs(filename) else: self.doc=self.xlApp.Documents.Add() self.filename='' def add_doc_end(self, string): '''在文件末尾新增內容''' rangee = self.doc.Range() rangee.InsertAfter('\n'+string) def add_doc_start(self, string): '''在文件開頭新增內容''' rangee = self.doc.Range(0, 0) rangee.InsertBefore(string+'\n') def insert_doc(self, insertPos, string): '''在文件insertPos位置新增內容''' rangee = self.doc.Range(0, insertPos) if (insertPos == 0): rangee.InsertAfter(string) else: rangee.InsertAfter('\n'+string) def save(self): '''儲存文件''' self.doc.Save() def save_as(self, filename): '''文件另存為''' self.doc.SaveAs(filename) def close(self): '''儲存檔案、關閉檔案''' self.save() self.xlApp.Documents.Close() self.xlApp.Quit() if __name__=='__main__': #example1 TODAY = time.strftime('%Y-%m-%d', time.localtime(time.time())) excel = RemoteExcel('E:\\'++TODAY+'.xlsx') excel.set_cell('old',1,1, time.time()) print (excel.get_cell(1,1,'new')) excel.close() #example2 ''' doc = RemoteWord(r'E:\test.docx') doc.insert_doc(0, '0123456789') doc.add_doc_end('9876543210') doc.add_doc_start('asdfghjklm') doc.insert_doc(10, 'qwertyuiop') doc.close() '''