1. 程式人生 > >python操作excel

python操作excel

int lena cells src tar 程序 win32 div cep

python操作exce的方式:

  • 使用win32com
  • 使用xlrd(讀excel)、xlwt(寫excel)

1.使用win32com方式

代碼:

# coding=utf-8
from win32com.client import Dispatch
import pywintypes

‘‘‘
查看excel最大行數和列數
打開一個空白新建EXCEL表格,按CTRL+下箭頭,可以查看到最大行數;按CTRL+右箭頭,
可以查看到最大列標(若想顯示列數,可在最右一列的某單元格中輸入=column()回車,出現數字就是最大列數)。
‘‘‘


class Excel:
    def __init__
(self, filename=None): self.excel = Dispatch(Excel.Application) # 打開excel應用程序 self.excel.DisplayAlerts = 0 self.excel.Visible = 0 if filename is not None: self.filename = filename self.workBook = self.excel.Workbooks.Open(filename) else
: self.filename = ‘‘ self.workBook = self.excel.Workbooks.Add() # 新建excel # 保存excel文件 def save(self, save_path=None): if not save_path: self.filename = save_path self.workBook.SaveAs(save_path) else: self.workBook.Save()
# 關閉excel文件 def close(self): self.workBook.Close(SaveChanges=0) # 添加工作表 def addSheet(self, sheetName=None): sheet = self.workBook.Sheets.Add() if sheetName is not None: sheet.Name = sheetName def copySheet(self, srcSheetName, destSheetName=None, before=None): sheet = self.workBook.WorkSheets(srcSheetName) # 在指定工作表的後面插入新的工作表 if before is None: sheet.Copy(None, sheet) newSheet = sheet.Next if destSheetName is not None: newSheet.Name = destSheetName # 在指定工作表的前面插入新的工作表 else: sheet.Copy(before, None) if destSheetName is not None: index = before.Index - 1 # 所獲新插入的工作表所在的位置(工作表的index從1開始 self.workBook.Sheets(index).Name = destSheetName # 刪除工作表 def deleteSheet(self, sheetName): try: sheet = self.workBook.WorkSheets(sheetName) if sheet is not None: sheet.Delete() except pywintypes.com_error: pass # 獲取指定單元格的內容 def getCell(self, sheet, row, col): workSheet = self.workBook.WorkSheets(sheet) return workSheet.Cells(row, col).Value # 設置單元格內容 def setCell(self, sheet, row, col, val): workSheet = self.workBook.WorkSheets(sheet) workSheet.Cells(row, col).Value = val # 獲取一塊區域的內容 def getRange(self, sheet, row1, col1, row2, col2): workSheet = self.workBook.WorkSheets(sheet) return workSheet.Range(workSheet.Cells( row1, col1), workSheet.Cells(row2, col2)).Value # 拷貝一塊區域 def copyRange(self, sheet, row1, col1, row2, col2, targetRow, targetCol): workSheet = self.workBook.WorkSheets(sheet) srcRange = workSheet.Range( workSheet.Cells( row1, col1), workSheet.Cells( row2, col2)) targetRange = workSheet.Range( workSheet.Cells( targetRow, targetCol), workSheet.Cells( targetRow + row2 - row1, targetCol + col2 - col1)) #targetRange.Value = srcRange.Value srcRange.Copy(targetRange) # 與targetRange.Value = srcRange.Value效果相同 # 移動一塊區域 def cutRange(self, sheet, row1, col1, row2, col2, targetRow, targetCol): workSheet = self.workBook.WorkSheets(sheet) srcRange = workSheet.Range( workSheet.Cells( row1, col1), workSheet.Cells( row2, col2)) # 方案1 #targetRange = workSheet.Range(workSheet.Cells(targetRow, targetCol), workSheet.Cells(targetRow + row2 - row1, targetCol + col2 - col1)) # targetRange.Value = srcRange.Value # srcRange.Clear() #清空原區域的值 # 方案2 # targetRange = workSheet.Range(workSheet.Cells(targetRow, targetCol), workSheet.Cells(targetRow + row2 - row1, targetCol + col2 - col1)) # srcRange.Cut(targetRange) #直接調用系統函數 # 方案3與方案2類似 srcRange.Cut(workSheet.Cells(targetRow, targetCol)) # 清空指定區域內容 def clearRange(self, sheet, row1, col1, row2, col2): workSheet = self.workBook.WorkSheets(sheet) srcRange = workSheet.Range( workSheet.Cells( row1, col1), workSheet.Cells( row2, col2)) srcRange.Clear() # 添加圖片 def addPicture(self, sheet, pictureName, left, top, width, height): workSheet = self.workBook.WorkSheets(sheet) ‘‘‘, AddPicture(self, Filename=<PyOleMissing object>, LinkToFile=<PyOleMissing object>, >, Left=<PyOleMissing object>, Top=<PyOleMissing object>, Width=<PyOleMissing objec hod of win32com.client.CDispatch instance ‘‘‘ workSheet.Shapes.AddPicture( pictureName, 1, 1, left, top, width, height) # 刪除指定行 def deletRow(self, sheet, row): if row < 1 or row > 1048576: return deleteRow = self.workBook.WorkSheets(sheet).Rows(row) deleteRow.Delete() # 刪除指定列 def deleteCol(self, sheet, col): if col < 1 or col > 16384: return deleteCol = self.workBook.WorkSheets(sheet).Columns(col) deleteCol.Delete()

技術分享

2.使用xlrd,xlwt操作excel

可參考:

http://xlwt.readthedocs.io/en/latest/

http://www.cnblogs.com/hupeng1234/p/6681830.html

http://www.cnblogs.com/hupeng1234/p/6681800.html

python操作excel