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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值