Importation et exportation de fichiers Excel avec JavaScript

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);
};

Étiquettes: JavaScript Excel xlsx FileReader DOM Manipulation

Publié le 12 juin à 00h14