Bu blog gönderisindeki eğitimle React uygulamalarınızda Excel dosyalarını zahmetsizce nasıl yükleyeceğinizi ve görüntüleyeceğinizi öğreneceğiz. React ile web geliştirme becerilerinizi geliştirmek için diğer blog gönderilerini inceleyebilirsiniz. Şimdi hemen başlayalım ve projelerinizi Excel dosya entegrasyonuyla güçlendirelim!
app.js
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | import { useState } from "react"; import * as XLSX from 'xlsx'; function App() { // onchange states const [excelFile, setExcelFile] = useState(null); const [typeError, setTypeError] = useState(null); // submit state const [excelData, setExcelData] = useState(null); // onchange event const handleFile=(e)=>{ let fileTypes = ['application/vnd.ms-excel','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','text/csv']; let selectedFile = e.target.files[0]; if(selectedFile){ if(selectedFile&&fileTypes.includes(selectedFile.type)){ setTypeError(null); let reader = new FileReader(); reader.readAsArrayBuffer(selectedFile); reader.onload=(e)=>{ setExcelFile(e.target.result); } } else{ setTypeError('Please select only excel file types'); setExcelFile(null); } } else{ console.log('Please select your file'); } } // submit event const handleFileSubmit=(e)=>{ e.preventDefault(); if(excelFile!==null){ const workbook = XLSX.read(excelFile,{type: 'buffer'}); const worksheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[worksheetName]; const data = XLSX.utils.sheet_to_json(worksheet); setExcelData(data.slice(0,10)); } } return ( <div className="wrapper"> <h3>Upload & View Excel Sheets</h3> {/* form */} <form className="form-group custom-form" onSubmit={handleFileSubmit}> <input type="file" className="form-control" required onChange={handleFile} /> <button type="submit" className="btn btn-success btn-md">UPLOAD</button> {typeError&&( <div className="alert alert-danger" role="alert">{typeError}</div> )} </form> {/* view data */} <div className="viewer"> {excelData?( <div className="table-responsive"> <table className="table"> <thead> <tr> {Object.keys(excelData[0]).map((key)=>( <th key={key}>{key}</th> ))} </tr> </thead> <tbody> {excelData.map((individualExcelData, index)=>( <tr key={index}> {Object.keys(individualExcelData).map((key)=>( <td key={key}>{individualExcelData[key]}</td> ))} </tr> ))} </tbody> </table> </div> ):( <div>No File is uploaded yet!</div> )} </div> </div> ); } export default App; |
Github: https://github.com/fatihsoysal/React-Upload-And-View-Excel-Files