Importation de fichiers Excel
Pour importer un fichier Excel, nous créons un élément input de type fichier et un bouton déclencheur. Le code HTML ci-dessous utilise React pour la gestion des événements :
<button style={{ color: '#1890ff', fontSize: '14px', cursor: 'pointer' }} onClick={triggerFileInput}>
Importer
</button>
<input ref={fileInputRef} type="file" style={{ display: 'none' }} accept=".xlsx, .xls" onChange={processFile} />
Le JavaScript associé utilise la bibliothèque XLSX pour lire le contenu du fichier. Voici une version restructurée avec des noms de variables et une logique modifiés :
import XLSX from 'xlsx';
const fileInputRef = React.useRef(null);
const triggerFileInput = () => {
fileInputRef.current.click();
};
const processFile = (event) => {
const selectedFile = event.target.files[0];
const reader = new FileReader();
reader.onload = (e) => {
try {
const binaryData = e.target.result;
const workbook = XLSX.read(binaryData, { type: 'binary' });
let parsedData = [];
for (const sheetName in workbook.Sheets) {
const sheetData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], { header: 1, defval: '' });
parsedData = parsedData.concat(sheetData);
}
if (parsedData.length === 0) {
event.target.value = '';
console.warn('Aucune donnée importée.');
return;
}
console.log('Données importées :', parsedData);
event.target.value = '';
} catch (error) {
event.target.value = '';
console.error('Erreur lors de l\'importation :', error);
}
};
reader.readAsBinaryString(selectedFile);
};
Exportation de fichiers Excel
Pour exporter des données vers un fichier Excel, nous générons un contenu CSV et créons un lien de téléchargmeent. Exemple avec des données structurées :
const sampleData = [
{ nom: 'Alice', âge: 28, genre: 'Femme' },
{ nom: 'Bob', âge: 35, genre: 'Homme' },
{ nom: 'Claire', âge: 42, genre: 'Femme' },
];
const exportToExcel = (data) => {
const headers = 'Identifiant,Nom,Âge,Genre';
const rows = data.map((item, index) =>
`${index + 1},${item.nom},${item.âge},${item.genre}`
);
const csvContent = [headers, ...rows].join('\n');
const encodedUri = `data:text/csv;charset=utf-8,\ufeff${encodeURIComponent(csvContent)}`;
const downloadLink = document.createElement('a');
downloadLink.href = encodedUri;
downloadLink.download = 'export_données.xlsx';
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
};