> Modules non standards > Autres modules non standards > xlwt (écriture des fichiers excel)
xlwt (écriture des fichiers excel)
Ce module écrit des fichiers xls (pas xlsx).
import xlwt : pour importer le module.
Création d'un fichier excel :
- workbook = xlwt.Workbook() : création de l'objet excel.
- sheet = workbook.add_sheet('feuille1') : rajout d'une feuille.
- sheet.write(0, 1, 'cellule en haut a gauche') : remplissage de la cellule B1 à la première ligne et la 2ème colonne (origines sont à 0).
- sheet.write(2, 0, 5) : remplissage de la cellule A3 avec une valeur numérique.
- sheet.write(5, 0, datetime.date(2015, 12, 31), style = xlwt.easyxf(num_format_str = 'YYYY-MM-DD')) : remplissage d'une cellule avec une date, formattée 2015-12-31 (sinon, la date est formattée comme un simple nombre si on ne précise pas de style).
- col = sheet.col(0); col.width = 7000 : on impose à la première colonne une largeur donnée (en points) :
- le caractère 0 a une largeur d'environ 256.
- donc, en première approximation, faire : sheet.col(0).width = (1 + len(content)) * 256 où content est la chaîne de taille la plus grande contenue dans la 1ère colonne.
- col = sheet.col(2); col.hidden = True : on rend la 3ème colonne invisible.
- workbook.save('myFile.xls') : sauvegarde de l'excel dans un fichier.
On peut appliquer un style à une cellule de 2 façons :
- 1ère façon :
font = xlwt.Font()
font.name = 'Arial'
font.height = 300
font.underline = 1
font.italic = 1
font.bold = 1
font.colour_index = xlwt.Style.colour_map['violet']
borders = xlwt.Borders()
borders.left = xlwt.Borders.THICK
borders.right = xlwt.Borders.HAIR
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DOTTED
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = xlwt.Style.colour_map['yellow']
style = xlwt.XFStyle()
style.num_format_str = 'YYYY-MM-DD'
style.font = font
style.borders = borders
style.pattern = pattern
sheet.write(7, 1, datetime.date(2015, 1, 1), style)
- 2ème façon plus simple :
style = xlwt.easyxf('font: height 400, bold 1, color red, italic 1, underline single; alignment: horizontal center, vertical center; borders: left thin, right thin, top thick, bottom thick, top_color green; pattern: pattern solid, fore_color yellow', num_format_str = 'YYYY-MM-DD'); sheet.write(7, 1, datetime.date(2015, 1, 1), style) (taille de police de 400 points, en gras et italique, rouge et souligné, alignement centré, avec des bordures comme indiqué, sur fond jaune et au format date.
la syntaxe est sous la forme : (nomCatégorie: nomPropriété1 valeur1, nomPropriété2 valeur2;) répété autant de fois qu'il y a des catégories.
Couleurs :
- Les couleurs disponibles simplement sont stockées dans le dictionnaire nom -> index de couleur : xlwt.Style.colour_map.
Formules :
- sheet.write(2, 1, xlwt.Formula('A3 + A4'))
- sheet.write(3, 1, xlwt.Formula('SUM(A3:A4)'))
- sheet.write(4, 1, xlwt.Formula('HYPERLINK("http://www.python.org";"python")'))
Attention : à chaque fois qu'on donne un style à une cellule, le style est enregistré dans le fichier excel. Donc, ne as créer trop de styles, et surtout, 2 cellules de même style doivent utiliser le même objet style (sinon, celui-ci sera enregistré 2 fois dans le fichier excel) !
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert