python 操作 excel

from win32com.client import Dispatch
import os
DefaultPath = 'excel'


class ExcelComObj:

   def __init__(self, filename=None, sheetnum = 1):
       self.xlApp = Dispatch('Excel.Application')
       if filename:
           pathname = os.path.split(filename)
           if pathname[0] in [None,'']: path = os.getcwd() + os.sep + DefaultPath
           else: path = pathname[0]
           nameext = os.path.splitext(pathname[1])
           if nameext[1] in [None,'']: ext = '.xls'
           else: ext = nameext[1]
           name = path + os.sep + nameext[0] + ext
           self.xlBook = self.xlApp.Workbooks.Open(name)
           self.sht = self.xlBook.Sheets(sheetnum)
       else:
           self.xlBook = self.xlApp.ActiveWorkbook
           self.sht = self.xlApp.ActiveWorkbook.ActiveSheet
           self.filename = ''

   def save(self, filename=None):
       if filename:
           pathname = os.path.split(filename)
           if pathname[0] in [None,'']: path = os.getcwd() + os.sep + md.EXCEL_FILE_DIR
           else: path = pathname[0]
           nameext = os.path.splitext(pathname[1])
           if nameext[1] in [None,'']: ext = '.xls'
           else: ext = nameext[1]
           name = path + os.sep + nameext[0] + ext
           self.xlBook.SaveAs(name)
       else:
           self.xlBook.Save()

   def close(self):
       self.xlBook.Close(SaveChanges=0)
       del self.xlApp

   def getCell(self, row, col):
       return self.sht.Cells(row, col).Value
  
   def setCell(self, row, col, value):
       self.sht.Cells(row, col).Value = value
  
   def getRange(self, row1, col1, row2, col2):
       return self.sht.Range(self.sht.Cells(row1, col1), self.sht.Cells(row2, col2)).Value
  
   def setRange(self, leftCol, topRow, data):
       bottomRow = topRow + len(data) - 1
       rightCol = leftCol + len(data[0]) - 1
       self.sht.Range(
           self.sht.Cells(topRow, leftCol),
           self.sht.Cells(bottomRow, rightCol)
           ).Value = data

你可能感兴趣的:(python 操作 excel)