L’usage excessif des LLM pour contribuer à Django pose problème : les mainteneurs ont du mal à évaluer si le contributeur comprend réellement le code proposé. L’article explique pourquoi la communauté Django privilégie l’authenticité et la compréhension réelle plutôt que des PR générées par IA. Des recommandations sont données pour utiliser les LLM comme outil complémentaire sans masquer sa compréhension du sujet.
Je me mets de plus en plus à lire des articles de blogs et je trouve ça passionnant, cf la discussion sur astral.sh racheté par OpenAI qui m’a fait découvrir le blog de https://simonwillison.net/ auquel je me suis abonné immédiatement
Avez vous des recommandations de bon blogs (idéalement auxquels je peux m’abonner par mail), principalement python mais sinon tech en général, software, etc…
Marco 'Lubber' Wienkoop pour son travail sur Fomantic-UI, un chouette framework CSS que nous utilisons dans canaille. Fomantic-UI est aussi utilisé par d'autres outils sur lesquels nous comptons, comme Forgejo.
Hsiaoming Yang pour son travail sur authlib, une bibliothèque python d'authentification que nous utilisons dans canaille.
Contributions
Il y a bien longtemps dans Python
Une Pull Request à cpython ajoutant un gestionnaire de contexte à Mailbox a été intégrée après une longue période d'inactivité. Elle datait de 2017, ce qui en faisait la 27ième plus vieille PR ouverte sur cpython.
A Pull Request to cpython adding a context manager to Mailbox has been merged after a long period of inactivity. It was created in 2017 and was the 27th oldest opened PR for cpython.
Astral.sh, l’entreprise qui édite (en rust) différents outils open-source pour l’écosystème Python, a annoncé sur son blog aujourd’hui avoir été rachetée par OpenAI : Astral to join OpenAI .
Les outils en question :
ruff : linter et formateur de code
uv : gestionnaire de dépendances
ty : vérification statique de typage
pyx : une alternative à PyPI pour mettre à disposition des packages Python
Je ne sais pas quelle place occupaient ces outils dans vos projets perso ou pro. J’avoue que j’appréciais une certaine indépendance de cet écosystème d’outils vis-à-vis de ceux de l’IA générative.
Comment vivez-vous ce changement de gouvernance ? Quelles sont les conséquences pour vos choix d’outillage et vos habitudes ?
Belle journée
Sympathicamicalement, Luc
PS : c’est le premier sujet que je lance sur ce forum de discussion. S’il est inapproprié, n’hésitez pas à me le dire.
Exploration des comportements surprenants de float('nan') en Python : chaque instance de NaN est hashable mais jamais égale à elle-même, ce qui produit des résultats contre-intuitifs dans les sets (10 NaN distincts) et les dictionnaires (clés inaccessibles). L’article démontre avec des exemples concrets pourquoi NaN crée des situations paradoxales dans les structures de données Python, bien que son utilisation comme clé de dictionnaire soit déconseillée en pratique.
Je suis à la recherche sur Paris d’un lieu et d’un animateur pour que l’on puisse réaliser notre kick off avec mon équipe.
L’idée serait de faire sur la matinée conférence ou workshop
Nous sommes 8 personnes et on aimerait un sujet lié autour de python / GCP / vuejs (ou autre)
Le niveau est très varié, cette équipe travaille dans la data
Cela peut être un sujet déjà présenté auparavant ou à co-construire
J’aimerais idéalement avant juin
N’hésitez pas à me contacter si intéressé ou si vous avez besoin de plus de détails
NdM: le paquet Python présenté ci-dessous est un logiciel propriétaire avec licence annuelle payante, les prix annoncés commençant à 799 USD/an.
Dans les flux de travail de gestion documentaire et de rapports d'entreprise, la conversion de feuilles de calcul Excel au format PDF représente une opération fondamentale. Le format PDF préserve fidèlement la mise en page, empêche les modifications accidentelles et garantit un affichage cohérent sur différents appareils et plateformes. Cet article explore les méthodes efficaces pour convertir des fichiers Excel en PDF à l'aide de Python, tout en maintenant la qualité du formatage et en contrôlant divers paramètres de conversion.
Pourquoi convertir Excel en PDF
Les feuilles de calcul Excel excellent dans l'analyse et l'édition de données, mais elles présentent certaines limitations lors de la distribution :
Préservation de la mise en page : Les PDF maintiennent exactement le formatage des cellules, les largeurs de colonnes et la disposition des pages, quel que soit le système du lecteur
Protection des données : Les PDF sont plus difficiles à modifier accidentellement, protégeant ainsi les calculs et données sensibles
Visualisation universelle : Les destinataires peuvent consulter les PDF sans avoir besoin d'Excel ou d'un logiciel de tableur
Prêt à imprimer : Les PDF sont optimisés pour l'impression avec des sauts de page et des marges cohérents
Présentation professionnelle : Les PDF offrent une apparence soignée et finale pour les rapports et états financiers
L'automatisation de cette conversion avec Python permet le traitement par lots de rapports financiers, la génération automatique de factures et l'intégration dans des pipelines de données plus vastes.
Configuration de l'environnement
Avant de commencer, vous devez installer une bibliothèque Python prenant en charge les opérations Excel. Spire.XLS for Python fournit des API complètes pour gérer les classeurs au format XLSX, y compris les fonctionnalités de conversion PDF.
pip install Spire.XLS
Une fois installée, importez les modules pertinents dans votre script Python :
fromspire.xlsimport*fromspire.xls.commonimport*
Processus de conversion de base
Les étapes principales pour convertir un fichier Excel en PDF sont simples : créer un objet classeur, charger le fichier Excel et enregistrer au format PDF. Voici un exemple minimal fonctionnel :
La méthode la plus directe pour convertir un fichier Excel consiste à utiliser l'objet Workbook qui gère automatiquement la structure du document. Cette approche fonctionne parfaitement pour des conversions rapides où vous souhaitez préserver l'intégralité du contenu et du formatage d'origine sans configuration supplémentaire :
fromspire.xlsimport*fromspire.xls.commonimport*# Définir les chemins d'entrée et de sortieinputFile="tableau.xlsx"outputFile="resultat.pdf"# Créer un objet classeurworkbook=Workbook()# Charger le fichier Excel depuis le disqueworkbook.LoadFromFile(inputFile)# Configurer l'ajustement des feuilles pour un meilleur rendu PDFworkbook.ConverterSetting.SheetFitToPage=True# Enregistrer au format PDFworkbook.SaveToFile(outputFile,FileFormat.PDF)# Libérer les ressourcesworkbook.Dispose()
Ce code illustre le flux de conversion le plus élémentaire. L'objet Workbook gère le chargement et la gestion du fichier Excel, tandis que SaveToFile() avec FileFormat.PDF spécifie le PDF comme format de sortie. Le paramètre SheetFitToPage garantit que les feuilles de calcul sont correctement mises à l'échelle pour tenir dans les pages PDF.
Conformité PDF/A pour l'archivage
Pour l'archivage documentaire à long terme, le PDF/A constitue une version normalisée ISO du PDF conçue pour la préservation numérique. Convertir Excel en PDF/A assure que les documents resteront accessibles pendant des décennies :
Lorsque vos documents Excel contiennent des données financières, des registres légaux ou toute information nécessitant une conservation à long terme, il est essentiel d'utiliser le standard PDF/A. Cette norme garantit que tous les éléments visuels et texturaux sont intégrés dans le fichier, éliminant toute dépendance aux polices ou ressources externes :
fromspire.xlsimport*fromspire.xls.commonimport*inputFile="donnees_financieres.xlsx"outputFile="copie_archivage.pdf"workbook=Workbook()workbook.LoadFromFile(inputFile)# Définir le niveau de conformité PDF sur PDF/A-1Bworkbook.ConverterSetting.PdfConformanceLevel=PdfConformanceLevel.Pdf_A1B# Enregistrer en PDF conforme PDF/Aworkbook.SaveToFile(outputFile,FileFormat.PDF)workbook.Dispose()
Le paramètre PdfConformanceLevel offre plusieurs options :
Pdf_A1B : Conformité PDF/A-1 Niveau B - adaptée à la plupart des besoins d'archivage
Pdf_A2B : Conformité PDF/A-2 Niveau B - prend en charge des fonctionnalités plus modernes
Pdf_A3B : Conformité PDF/A-3 Niveau B - permet l'intégration de fichiers arbitraires
La conformité PDF/A est essentielle pour les documents juridiques, les registres financiers et tout contenu nécessitant une préservation à long terme.
Conversion de plages de cellules spécifiques
Parfois, vous n'avez besoin d'exporter qu'une plage de données spécifique plutôt que des feuilles de calcul entières. Cette approche s'avère utile pour créer des résumés ou extraire des indicateurs clés :
Dans de nombreux scénarios professionnels, seul un sous-ensemble des données doit être partagé. Plutôt que de distribuer un classeur complet, vous pouvez isoler une section pertinente et la convertir indépendamment. Cette technique permet de générer des vues ciblées adaptées à différents publics ou objectifs :
fromspire.xlsimport*fromspire.xls.commonimport*inputFile="rapport_trimestriel.xlsx"outputFile="section_resumé.pdf"workbook=Workbook()workbook.LoadFromFile(inputFile)# Ajouter une nouvelle feuille de calcul pour la plage sélectionnéeworkbook.Worksheets.Add("resume")# Copier la plage de cellules spécifique vers la nouvelle feuilleworkbook.Worksheets[0].Range["A9:E15"].Copy(workbook.Worksheets[1].Range["A9:E15"],False,# Ne pas copier les formulesTrue# Copier le formatage)# Ajuster automatiquement les largeurs de colonnes pour une meilleure apparenceworkbook.Worksheets[1].Range["A9:E15"].AutoFitColumns()# Enregistrer uniquement la plage sélectionnée en PDFworkbook.Worksheets[1].SaveToPdf(outputFile)workbook.Dispose()
Cette approche s'avère particulièrement utile lorsque :
- Vous créez des résumés exécutifs à partir de rapports détaillés
- Vous extrayez des tableaux de données spécifiques pour des présentations
- Vous générez des vues ciblées de grands ensembles de données
- Vous partagez des portions sélectionnées sans révéler les feuilles de calcul complètes
Ajustement du contenu à la largeur de page
Les feuilles de calcul Excel s'étendent souvent sur plusieurs colonnes qui peuvent ne pas bien s'adapter aux tailles de page standard. Vous pouvez configurer la mise en page pour forcer le contenu à tenir dans des dimensions spécifiées :
Lorsque vos tableaux Excel comportent de nombreuses colonnes, il est crucial de configurer correctement l'aperçu avant impression. Sans ajustement approprié, certaines colonnes pourraient être coupées ou apparaître sur des pages séparées, rendant la lecture difficile. La propriété FitToPagesWide résout ce problème en compressant horizontalement le contenu :
fromspire.xlsimport*fromspire.xls.commonimport*inputFile="donnees_etendues.xlsx"outputFile="rapport_ajuste.pdf"workbook=Workbook()workbook.LoadFromFile(inputFile)# Configurer chaque feuille de calculforsheetinworkbook.Worksheets:# Tenir sur une page de large (pas de limite d'échelle horizontale)sheet.PageSetup.FitToPagesWide=1# Pas de limite verticale (autoriser plusieurs pages en hauteur)sheet.PageSetup.FitToPagesTall=0# Enregistrer avec la mise en page appliquéeworkbook.SaveToFile(outputFile,FileFormat.PDF)workbook.Dispose()
Les paramètres de mise en page fonctionnent comme suit :
FitToPagesWide = 1 : Force toutes les colonnes à tenir dans une seule largeur de page
FitToPagesTall = 0 : Autorise un nombre illimité de pages verticalement (pas d'échelle verticale)
FitToPagesTall = 1 : Forcerait la feuille entière sur une seule page
Cette configuration garantit que les feuilles de calcul larges restent lisibles sans défilement horizontal excessif ni tailles de police minuscules.
Exemple pratique : Système automatisé de distribution de rapports
En combinant ces techniques, vous pouvez construire un système automatisé de distribution de rapports :
Pour illustrer l'application concrète de ces concepts, imaginons un scénario où vous devez générer régulièrement des rapports départementaux à partir d'un classeur maître. Un tel système nécessite non seulement la conversion en PDF, mais aussi l'organisation des fichiers, le suivi des versions et la personnalisation selon les destinataires :
importosfromdatetimeimportdatetimefromspire.xlsimport*fromspire.xls.commonimport*classDistributeurRapportsExcel:def__init__(self,racine_rapports="rapports"):self.racine_rapports=racine_rapportsifnotos.path.exists(racine_rapports):os.makedirs(racine_rapports)defgenerer_rapport_mensuel(self,fichier_excel,departement=None):"""Générer un rapport PDF à partir d'un fichier Excel"""# Créer un sous-répertoire pour le départementifdepartement:dossier_dept=os.path.join(self.racine_rapports,departement)ifnotos.path.exists(dossier_dept):os.makedirs(dossier_dept)else:dossier_dept=self.racine_rapports# Générer un nom de fichier avec horodatagehorodatage=datetime.now().strftime("%Y%m_%H%M%S")nom_base=os.path.splitext(os.path.basename(fichier_excel))[0]nom_pdf="{0}_{1}.pdf".format(nom_base,horodatage)chemin_pdf=os.path.join(dossier_dept,nom_pdf)# Effectuer la conversionworkbook=Workbook()workbook.LoadFromFile(fichier_excel)# Optimiser pour la sortie PDFworkbook.ConverterSetting.SheetFitToPage=True# Appliquer la mise en page à toutes les feuillesforsheetinworkbook.Worksheets:sheet.PageSetup.FitToPagesWide=1sheet.PageSetup.FitToPagesTall=0workbook.SaveToFile(chemin_pdf,FileFormat.PDF)workbook.Dispose()returnchemin_pdfdefdistribuer_feuilles_classeur(self,fichier_excel,dossier_sortie):"""Extraire et enregistrer chaque feuille en PDF séparé"""ifnotos.path.exists(dossier_sortie):os.makedirs(dossier_sortie)workbook=Workbook()workbook.LoadFromFile(fichier_excel)fichiers_exportes=[]forsheetinworkbook.Worksheets:nom_pdf=sheet.Name+".pdf"chemin_pdf=os.path.join(dossier_sortie,nom_pdf)sheet.SaveToPdf(chemin_pdf)fichiers_exportes.append(chemin_pdf)print("Feuille exportée : {0}".format(chemin_pdf))workbook.Dispose()returnfichiers_exportes# Exemple d'utilisationdistributeur=DistributeurRapportsExcel("rapports_mensuels")rapport_pdf=distributeur.generer_rapport_mensuel("donnees_ventes.xlsx",departement="ventes")print("Rapport généré : {0}".format(rapport_pdf))
Ce système de distribution offre :
- Une organisation par département
- Un suivi par horodatage pour le contrôle de version
- Une exportation flexible en fichier unique ou feuilles multiples
- Une optimisation automatique des pages
Problèmes courants et solutions
Problème 1 : Contenu coupé dans le PDF
Ajustez la mise en page pour adapter correctement le contenu :
La conversion de fichiers Excel en PDF constitue une compétence essentielle pour la génération automatique de rapports et la gestion documentaire. Tout au long de cet article, nous avons appris :
Comment charger et convertir des fichiers Excel à l'aide de l'objet Workbook
Créer des documents conformes PDF/A pour l'archivage à long terme
Exporter des plages de cellules spécifiques pour des rapports ciblés
Configurer la mise en page pour adapter le contenu de manière appropriée
Construire des systèmes de conversion par lots pour une utilisation en production
Ces techniques s'appliquent directement à la reporting financier, à la génération automatique de factures, aux tableaux de bord d'intelligence économique et aux flux de travail de conformité réglementaire. Après avoir maîtrisé la conversion de base, vous pouvez explorer des fonctionnalités avancées telles que la protection par mot de passe, les signatures numériques et les filigranes personnalisés pour construire des solutions d'automatisation documentaire complètes.