1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| import win32com.client,win32com.client.dynamic
from pywintypes import UnicodeType, TimeType
import os
class PyExcel:
def __init__(self,filename=None):
self.xlApp = win32com.client.dynamic.Dispatch('Excel.Application')
if filename:
self.filename = filename
self.xlBook = self.xlApp.Workbooks.Open(filename)
else:
self.xlBook = self.xlApp.Workbooks.Add()
self.filename=''
def save(self, newfilename=None):
if newfilename:
self.filename = newfilename
self.xlBook.SaveAs(newfilename)
else:
self.xlBook.Save()
def close(self):
self.xlBook.Close(SaveChanges=0)
del self.xlApp
def show(self):
self.xlApp.Visible=1
def hide(self):
self.xlApp.Visible=0
def getCell(self, sheet, row, col):
sht = self.xlBook.Worksheets(sheet)
return sht.Cells(row, col).Value
def setCell(self, sheet, row, col, value):
sht = self.xlBook.Worksheets(sheet)
sht.Cells(row, col).Value = value
def getRange(self, sheet, row1, col1, row2, col2):
sht = self.xlBook.Worksheets(sheet)
return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value
def setRange(self, sheet, leftCol, topRow, data):
bottomRow = topRow + len(data) - 1
rightCol = leftCol + len(data[0]) - 1
sht = self.xlBook.Worksheets(sheet)
sht.Range(
sht.Cells(topRow, leftCol),
sht.Cells(bottomRow, rightCol)
).Value = data
def getContiguousRange(self, sheet, row, col):
sht = self.xlBook.Worksheets(sheet)
# trouve la ligne du bas
bottom = row
while sht.Cells(bottom + 1, col).Value not in [None, '']:
bottom = bottom + 1
#trouve la col de droite
right = col
while sht.Cells(row, right + 1).Value not in [None, '']:
right = right + 1
return sht.Range(sht.Cells(row, col), sht.Cells(bottom, right)).Value
def getActiveCell(self):
r=self.xlApp.ActiveCell
return r
def mergeCells(self,sheet,row1,col1,row2,col2):
sht = self.xlBook.Worksheets(sheet)
sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Merge()
def addSheet(self,Before='',After=''):
if Before :
pos=self.xlBook.Worksheets(Before)
self.xlBook.Worksheets.Add(Before=pos)
elif After:
pos=self.xlBook.Worksheets(After)
self.xlBook.Worksheets.Add(After=pos)
else:
self.xlBook.Worksheets.Add()
def getActiveSheet(self):
sheet=self.xlBook.ActiveSheet.Name
return sheet
def setActiveSheet(self,sheet):
sht = self.xlBook.Worksheets(sheet)
sht.Activate()
def delSheet(self,sheet):
sht = self.xlBook.Worksheets(sheet)
sht.Delete()
def renameSheet(self,sheet,newName):
sht = self.xlBook.Worksheets(sheet)
sht.Name=newName
def moveSheet(self,sheet,Before='',After=''):
sht = self.xlBook.Worksheets(sheet)
if Before :
pos=self.xlBook.Worksheets(Before)
sht.Move(Before=pos)
else:
pos=self.xlBook.Worksheets(After)
sht.Move(After=pos)
def getSheets(self):
lstSheets=[sheet.Name for sheet in self.xlBook.Worksheets]
return lstSheets
def copySheet(self,sheet,Before='',After=''):
sht = self.xlBook.Worksheets(sheet)
if Before :
pos=self.xlBook.Worksheets(Before)
newSht=sht.Copy(Before=pos)
else:
pos=self.xlBook.Worksheets(After)
newSht=sht.Copy(After=pos)
def setBorder(self,sheet,row1,col1,row2,col2,weight):
sht = self.xlBook.Worksheets(sheet)
ran=sht.Range(sht.Cells(row1,col1),sht.Cells(row2,col2))
print ran
ran.Borders.Weight=weight
if __name__=='__main__':
tableur=PyExcel()
tableur.show()
shts=tableur.getSheets()
texte=u"éàèçùôØ"
tableur.setCell('Feuil1',2,2,texte)
tableur.setCell('Feuil2',1,1,texte)
for f in shts:
tableur.renameSheet(f,str(shts.index(f))) |
Partager