Bonjour
J'aimerais lire et écrire des fichiers excel.
Quel est le meilleur module pour python3.9 (sous Windows et Linux).
Il semble qu'il y ait le choix:
Cordialement
Version imprimable
Bonjour
J'aimerais lire et écrire des fichiers excel.
Quel est le meilleur module pour python3.9 (sous Windows et Linux).
Il semble qu'il y ait le choix:
Cordialement
J'ai déjà utilisé xlrd et xlwt mais je préfère maintenant pandas.
Attention, xlrd et xlwt ne sont faits que pour les fichiers "xls" (Bayard n'a pas précisé quel type de fichier excel il veut lire mais si c'est du excel 2010...). Et pour pandas faudrait que tu précises s'il est adapté aux excels récents (ça peut être utile pour ceux qui, comme moi, ne connaissent pas cette librairie).
Sinon il semble que la librairie plébiscitée aujourd'hui pour les excels new génération soit openpyxl.
Heu, il faut lire des fichiers xlsX.
Pandas gère des fichiers xlsx.
J'ai testé
Bonjour,
pour le boulot, je suis justement en train d'écrire une classe qui doit lire indépendamment des fichiers .xls et .xlsx et j'utilise la librairie pandas.
Cette dernière utilise openpyxl pour gérer les fichiers .xlsx et, je crois, xlrd pour les anciens formats.
Ci-dessous, un vieux bout de code issu du tout début du projet, pas le code à jour sous la main là :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 from pathlib import Path import pandas def main() -> None: '''Main function''' data = {} for file in Path('.').glob('*.xls*'): document = pandas.ExcelFile(file) data[file] = pandas.read_excel( document, document.sheet_names[0], index_col=None, na_values=["NA"] ) print(f'{file} traité') for file in data: print(f'{file} = {data[file]}')
Et si besoin, une p'tite classe lisant un fichier Excel (xls, xlsx, peu importe) et retournant les données récupérées de la première feuille dans un dictionnaire.
Avec cet exemple de fichier Excel :Code:
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 #!/usr/bin/env python3 from pathlib import Path from typing import Any import pandas class ExcelDataExtractor: '''ExcelDataExtractor. Extracts data from an Excel file. ''' @staticmethod def content(excelfile: Path) -> dict[str, Any]: '''Extracts content from an Excel file et returns it. Args: excelfile (Path): Xls or xlsx file name. Returns: dict[str, Any] : Excel content returned to dict. ''' document = pandas.ExcelFile(excelfile) return pandas.read_excel( document, sheet_name=document.sheet_names[0], ).T.to_dict()
Pièce jointe 606047
Le code pour taper dans la classe ;)
En sortie :Code:
1
2
3
4
5
6
7
8
9
10
11
12 from pathlib import Path from excel_data_extractor import ExcelDataExtractor def main() -> None: '''Main function''' excelfile: Path = Path('test.xlsx') content = ExcelDataExtractor().content(excelfile=excelfile) print(content) if __name__ == '__main__': main()
Code:
1
2
3 {0: {'CHAMP 1': 'valeur 1', 'CHAMP 2': 'valeur 1', 'CHAMP 3': 'valeur 1'}, 1: {'CHAMP 1': 'valeur 2', 'CHAMP 2': 'valeur 2', 'CHAMP 3': 'valeur 2'}, 2: {'CHAMP 1': 'valeur 3', 'CHAMP 2': 'valeur 3', 'CHAMP 3': 'valeur 3'}}
Bonjour,
Pour le boulot j'utilise xlsxwriter depuis longtemps , il fut un temps ou il n'était possible de créer les fichiers Excel avec openpyxl , je ne sais pas si c'est toujours le cas.
De plus la mise ne forme de cellules est assez simple.