TP 1
Avec une bonne compréhension des différentes techniques de prompting, on va pouvoir commencer à générer du code de qualité.
Durée : 15 minutes
Contexte
Un client souhaite extraire des données d'un fichier Excel pour les afficher sur une page web.
Pour le moment, il n'a besoin que de ça : une seule feuille Excel et une transposition littérale en page web.
Contraintes
Vous êtes libres d'utiliser l'outil de votre choix.
Le code final doit être déployé soit avec le fichier Excel inclus dans le projet ou bien en acceptant un upload de fichier Excel dans la page web.(./document.xslx
) soit en acceptant un upload de fichier Excel dans la page web.
Un fichier Excel d'exemple est disponible ici.
Etape 1
Construire un prompt pour le projet qui inclut
- les contraintes du client
- les langages que vous souhaitez utiliser
- les fonctionnalités attendues
Indice
Pourquoi ne pas faire rédiger le prompt par le LLM ?
Etape 2
Lancer le prompt et observer le résultat
Indice
Crée une application web frontend (sans backend) utilisant HTML, CSS et JavaScript.
Intègre la bibliothèque SheetJS via CDN pour :
1. Permettre à l'utilisateur de télécharger un fichier Excel (.xlsx/.xls).
2. Extraire les données de la première feuille du fichier.
3. Afficher les données sous forme de tableau HTML littéral (sans modification).
4. Gérer les erreurs : formats invalides, feuilles vides.
Exigences :
- HTML : Bouton d'upload, conteneur pour le tableau.
- JavaScript : Utilise FileReader et SheetJS pour parser le fichier.
- CSS (optionnel) : Style minimal pour le tableau (bordures visibles).
Structure attendue :
<!DOCTYPE html>
<html>
<head>
<title>Excel to Web</title>
<script src="https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js"></script>
<style>
table { border-collapse: collapse; }
th, td { border: 1px solid #ddd; padding: 8px; }
</style>
</head>
<body>
<input type="file" id="excelFile" accept=".xlsx,.xls">
<div id="excelTable"></div>
<script>
// Ton code ici (gestion upload, parsing, affichage)
</script>
</body>
</html>
Etape 3
Exécuter le code généré et observer le résultat.
Indice
Copier coller le code dans un dossier intitulé TP1
et l'ouvrir dans un navigateur.
Solution
Cliquer ici
<!DOCTYPE html>
<html>
<head>
<title>Excel to Web</title>
<script src="https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js"></script>
<style>
table { border-collapse: collapse; }
th, td { border: 1px solid #ddd; padding: 8px; }
#excelTable { margin-top: 20px; }
#error { color: red; margin-top: 20px; }
</style>
</head>
<body>
<input type="file" id="excelFile" accept=".xlsx,.xls">
<div id="excelTable"></div>
<div id="error"></div>
<script>
document.getElementById('excelFile').addEventListener('change', function(e) {
var file = e.target.files[0];
var errorDiv = document.getElementById('error');
errorDiv.textContent = '';
if (!file) {
return;
}
var reader = new FileReader();
reader.onload = function(e) {
var data = new Uint8Array(e.target.result);
var workbook = XLSX.read(data, { type: 'array' });
// Vérifier s'il y a des feuilles dans le workbook
if (workbook.SheetNames.length === 0) {
errorDiv.textContent = 'Le fichier Excel ne contient aucune feuille.';
return;
}
var firstSheetName = workbook.SheetNames[0];
var worksheet = workbook.Sheets[firstSheetName];
// Vérifier si la feuille est vide
var jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
if (jsonData.length === 0) {
errorDiv.textContent = 'La première feuille du fichier Excel est vide.';
return;
}
// Générer le tableau HTML
var html = '<table>';
for (var i = 0; i < jsonData.length; i++) {
html += '<tr>';
for (var j = 0; j < jsonData[i].length; j++) {
if (i === 0) {
html += '<th>' + jsonData[i][j] + '</th>';
} else {
html += '<td>' + jsonData[i][j] + '</td>';
}
}
html += '</tr>';
}
html += '</table>';
document.getElementById('excelTable').innerHTML = html;
};
reader.onerror = function() {
errorDiv.textContent = 'Erreur lors de la lecture du fichier.';
};
reader.readAsArrayBuffer(file);
});
</script>
</body>
</html>
Synthèse
Qu'est-ce qui marche ?
Quels sont les problèmes rencontrés ?