Bonjour,
Je voudrais dans mon appli charger un fichier excel, le lire, et renvoyer des infos au format json
Pour cela, j'utilise axios.
Je commence d'abord par des choses simples (afficher la liste des noms des feuilles du classeur excel)
côté frontend :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33 import axios from 'axios'; function MyComponent() { const [file, setFile] = useState(null) const handleFile = async () => { if (!file) return; const formData = new FormData(); formData.append("file", file[0]); const res = await axios.post("/backend/uploadFile", formData, { headers: { 'Content-Type': 'multipart/form-data' }, onUploadProgress: (progressEvent) => { console.log( "Upload progress: " + Math.round( (progressEvent.loaded / (progressEvent.total ?? 1)) * 100 ) + "%" ); }, }); console.log(res); } return ( <> <input type="file" name="filename2" id="filename2" required onChange={(e) => setFile(e.target.files)}/> <button onClick={handleFile}>UPLOAD</button> </> ); }
côté backend :
Quand j'exécute, j'ai bien le fichier qui est téléchargé dans tmp/uploads, avec un nom bizarre (ex : b096c76afc89ab236a54729f5d8a2798), mais quand je lui remet l'extension .xls et que je l'ouvre, j'ai bien mon fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31 import express from "express"; import multer from "multer"; import * as XLSX from 'xlsx'; const app = express(); app.use(express.json()); app.get("/helloText", (req, res) => { res.send({ myResponse: "Hello World!" }); }); const upload = multer({ dest: "tmp/uploads/" }); app.post("/uploadFile", upload.single("file"), (req, res) => { const uploadedFile = req.file; console.log(req.file) console.log(uploadedFile.originalname); const workbook = XLSX.read(uploadedFile.path, {type: "binary"}); console.log(workbook.SheetNames) res.send({ myResponse: "File uploaded successfully" }); }); app.listen(8002, () => { console.log(`Server is running on port ${8002}`); });
Quand j'affiche req.file, j'ai les infos du fichier :
-> à ce propos, comment gérer l'encodage et les lettres accentuées ? (voir originalname)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 { fieldname: 'file', originalname: 'Donnees XRF - 01-BIC3-Résultats2025-09.xlsx', encoding: '7bit', mimetype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', destination: 'tmp/uploads/', filename: 'a6cb9674be41e209358c46ed6e73eca6', path: 'tmp\\uploads\\a6cb9674be41e209358c46ed6e73eca6', size: 61379 }
Quand je veux afficher la liste des noms des feuilles du classeur excel, j'ai :
Qu'est ce qui cloche ? comment avoir la liste des noms des feuilles ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part [ 'Sheet1' ]
Merci,
Nico








Répondre avec citation
Partager