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
| #!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
# Python 2.7
import win32com.client
#############################################################################
class Excelfacile(object):
def __init__(self, fichier=""):
self.excel = win32com.client.Dispatch('Excel.Application')
self.fichier = fichier
if fichier=="":
self.wb = self.excel.Workbooks.Add()
else:
self.wb = self.excel.Workbooks.Open(fichier)
def nbrows(self, sheet=1):
"""retourne le nombre total de ligne utilisées"""
return self.wb.Sheets(sheet).UsedRange.Rows.Count
def nbcols(self, sheet=1):
"""retourne le nombre total de colonnes utilisées"""
return self.wb.Sheets(sheet).UsedRange.Columns.Count
def listeval(self, sheet=1, row1=1, col1=1, row2=None, col2=None):
"""retourne la liste des valeurs du rectangle [[row1,col1][row2,col2]]
de la feuille 'sheet'
si row2 et/ou col2 = None, on prend la dernière ligne et/ou colonne
"""
cell1 = self.wb.Worksheets(sheet).Cells(row1, col1)
if row2==None:
row2 = self.nbrows(sheet) - row1 + 1
if col2==None:
col2 = self.nbcols(sheet) - col1 + 1
cell2 = self.wb.Worksheets(sheet).Cells(row2, col2)
return self.wb.Worksheets(sheet).Range(cell1, cell2).Value
def save(self, nouvfichier="", ):
if nouvfichier=="":
self.wb.Save()
else:
self.fichier = nouvfichier
self.wb.SaveAs(nouvfichier)
def close(self):
self.wb.Close(SaveChanges=0)
del self.excel
#############################################################################
if __name__ == "__main__":
# chargement
excel = Excelfacile(r"C:\Chemin\vers\essai4.slk")
# affichage des valeurs
for ligne in excel.listeval():
print ligne
# enregistrement sous le format xls
excel.save(r"C:\Chemin\vers\essai4.xls")
# fermeture
excel.close() |
Partager