Importar archivo de Excel a MySQL usando PHP
Importar archivo de Excel a MySQL. Backup y restore de bases de datos es lo más importante en el mantenimiento de un software. El backup automático periódico es imprescindible para cualquier proyecto. Si en caso de que, hay un defecto de seguridad desconocido y que afecta a su sistema, entonces su respaldo es el Santo Grial para salvarle.
La exportación de la base de datos a un archivo de copia de seguridad puede utilizarse en el futuro para restaurar el sistema. Por lo tanto, siempre es necesario verificar el archivo de copia de seguridad haciendo una restauración de prueba. En general, el archivo de copia de seguridad estará en formato SQL, Excel o CSV.
Los clientes de la base de datos disponibles en el mercado proporcionan una opción para importar el archivo de copia de seguridad en estos formatos para restaurar los datos. Vamos a crear nuestro propio cliente de base de datos php para importar datos desde un archivo Excel.
Importar archivo de Excel a MySQL usando PHP
Tengo un formulario HTML con una opción de carga de archivos que sólo acepta archivos de Excel. Después de cargar el archivo, he analizado los datos de Excel para insertarlos en una base de datos.
¿Qué recursos se necesitan?
Utilicé PHPSpreadSheet Library para leer el archivo de Excel. La restauración de Excel backup en una base de datos a través de programación nos ahorrará tiempo. Estudiemos cómo implementar un restore rápido importando datos masivos de archivos de Excel.
Si estás buscando exportar prueba mi artículo anterior sobre exportar datos en formato CSV.
Elegir archivo de Excel para importar datos
Este formulario HTML con la opción de carga de archivos se utiliza para elegir el origen de Excel. Al enviar este formulario, el archivo Excel se enviará al PHP para analizar el origen de datos.
Esta opción de carga de archivos sólo permitirá que los archivos de Excel se elijan mediante el atributo Accept.
Este código también contiene la respuesta HTML para mostrar el mensaje devuelto desde PHP. Este mensaje se muestra basándose en el tipo de respuesta enviada desde PHP después de la importación de Excel.
<h2>Import Excel File into MySQL Database using PHP</h2> <div class="outer-container"> <form action="" method="post" name="frmExcelImport" id="frmExcelImport" enctype="multipart/form-data"> <div> <label>Choose Excel File</label> <input type="file" name="file" id="file" accept=".xls,.xlsx"> <button type="submit" id="submit" name="import" class="btn-submit">Import</button> </div> </form> </div> <div id="response" class="<?php if(!empty($type)) { echo $type . " display-block"; } ?>"><?php if(!empty($message)) { echo $message; } ?></div> <?php $sqlSelect = "SELECT * FROM tbl_info"; $result = mysqli_query($conn, $sqlSelect); if (mysqli_num_rows($result) > 0) { ?> <table class='tutorial-table'> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <?php while ($row = mysqli_fetch_array($result)) { ?> <tbody> <tr> <td><?php echo $row['name']; ?></td> <td><?php echo $row['description']; ?></td> </tr> <?php } ?> </tbody> </table> <?php } ?>
Código php para importar datos de Excel a MySQL
Descargue e implemente la biblioteca PHPSpreadSheet en su carpeta de proveedores de aplicaciones. Incluya la ruta de la biblioteca para obtener acceso a las funciones de PHPSpreadSheet para leer los datos de Excel en una matriz.
En este código php, he especificado la matriz de tipo de archivo permitido y comprobar el tipo de archivo cargado está en esta matriz. Después de validar el tipo de archivo, el archivo de Excel se carga en un destino y sus datos se analizan mediante las funciones de la biblioteca PHPSpradSheet.
Calcula el número de hojas y ejecuta un bucle para analizar la hoja de datos por hoja. Para cada iteración de la hoja, he creado un bucle anidado para analizar los datos fila por fila. Después de leer los datos de filas no vacías, dirijo la base de datos Insert y muestro la respuesta.
<?php $conn = mysqli_connect("localhost","root","test","phpsamples"); require_once('vendor/php-excel-reader/excel_reader2.php'); require_once('vendor/SpreadsheetReader.php'); if (isset($_POST["import"])) { $allowedFileType = ['application/vnd.ms-excel','text/xls','text/xlsx','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; if(in_array($_FILES["file"]["type"],$allowedFileType)){ $targetPath = 'uploads/'.$_FILES['file']['name']; move_uploaded_file($_FILES['file']['tmp_name'], $targetPath); $Reader = new SpreadsheetReader($targetPath); $sheetCount = count($Reader->sheets()); for($i=0;$i<$sheetCount;$i++) { $Reader->ChangeSheet($i); foreach ($Reader as $Row) { $name = ""; if(isset($Row[0])) { $name = mysqli_real_escape_string($conn,$Row[0]); } $description = ""; if(isset($Row[1])) { $description = mysqli_real_escape_string($conn,$Row[1]); } if (!empty($name) || !empty($description)) { $query = "insert into tbl_info(name,description) values('".$name."','".$description."')"; $result = mysqli_query($conn, $query); if (! empty($result)) { $type = "success"; $message = "Excel Data Imported into the Database"; } else { $type = "error"; $message = "Problem in Importing Excel Data"; } } } } } else { $type = "error"; $message = "Invalid File Type. Upload Excel File."; } } ?>
Salida de importación de php Excel
Esta captura de pantalla muestra la salida mostrando la lista de filas importadas de la base de datos.
