Importar un Excel a MySql con PHP

Importar un Excel a MySql con PHP

¿Necesitas importar masivamente información a mysql? ¿Necesitas agregar esta funcionalidad a tus proyectos web? Hoy vamos a ver un ejemplo práctico para importar un excel a mysql con php y la libreria SpreadSheet Reader, serán archivos de excel xls o xlsx y no formatos conflictivos como CSV.

Muchas veces en nuestros proyectos web o sistemas en la nube manejamos pequeños catálogos de información.

Nuestros usuarios deben de llenar la información al comenzar a utilizar su sistema lo cual se vuelve una tarea un poco molesta para ellos.

Es por esto que nos suelen pedir algun tipo de ayuda o función para que ellos llenen un excel y el sistema sea capaz de leer la información.


¿Sabías que?

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:

WebEmpresa

Hoy vamos a ver como importar un excel a mysql con php y SpreadSheet Reader.

Requerimientos

Antes de comenzar necesitamos descargarnos la librería de SpreadSheet Reader:

Obviamente también necesitaremos:

  • Servidor PHP
  • Excel

Teniendo los requerimientos vamos primeramente con la pantalla para seleccionar el formato excel.

Solicitar formato de excel

Necesitamos una pantalla para permitir a los usuarios de nuestro sistema subir el formato excel necesario con la información.

Para esto haremos uso de un formulario que manda la información via POST a un archivo php llamado subirFormatoProveedores.php que veremos más adelante.

Toma nota de los nombres de los input y que solo permitimos subir archivos xls y xlsx.

<div id="areaSubirFormato">
    <form action="database/subirFormatoProveedores.php" method="post" enctype="multipart/form-data">
        <p>
            <input type="submit" name="submit" value="Subir" accept=".xls,.xlsx" />
            <input type="file" name="file" />
        </p>
    </form>
    <p>
        <a href="files/formato-proveedores.xlsx" download>
            <i class="fa fa-download" aria-hidden="true"></i> Descargar formato
        </a>
    </p>
</div>

Como puedes ver en el segundo parrafo incluyo un enlace de descarga para que puedan descargar el formato vacio con los nombres de las columnas, te sugiero hacer lo mismo.

Dejo en tus manos añadir algo de estilo a esta precaria interfaz, para no agregar codigo innecesario no pondré CSS en este tutorial.

Procesar información del excel con SpreadSheet Reader

En nuestro archivo subirFormatoProveedores.php lo primero que haremos será incluir nuestro archivo de conexion a base de datos o en su defecto realizar la conexión a MySql.

También necesitaremos incluir el archivo excel_reader2.php y SpreadSheetReader.php de nuestra librería para leer archivos Excel que descargamos anteriormente.

require_once('excel/php-excel-reader/excel_reader2.php');

require_once('excel/SpreadsheetReader.php');

Posteriormente haremos algunas tareas básicas:

if( isset($_POST["submit"]) ){

	$error = false;

	$allowedFileType = ['application/vnd.ms-excel','text/xls','text/xlsx','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];

	if(in_array($_FILES["file"]["type"],$allowedFileType)){

Y subimos el archivo:

$ruta = "formatos/" . $_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $ruta);

Inicializamos SpreadSheetReader:

$Reader = new SpreadsheetReader($ruta);

Y comenzamos lo bueno:

$sheetCount = count($Reader->sheets());

for($i=0;$i<$sheetCount;$i++){

	$Reader->ChangeSheet($i);
		
	$primera = true;
	foreach ($Reader as $Row)
	{
                
                // Evitamos la primer linea
		if($primera){
			$primera = false;
			continue;
		}

		// Obtenemos informacion
	  
		$campo1= "";
		if(isset($Row[0])) {
			$campo1= mysqli_real_escape_string($conn,$Row[0]);
		}
			
		$campo2= "";
		if(isset($Row[1])) {
			$campo2= mysqli_real_escape_string($conn,$Row[1]);
		}

		...
		..
		.

		// Guardamos en base de datos
                // En siguiente sección  
		

	}

}

Bastante fácil no crees?

Vamos a ir leyendo fila por fila y preparamos la información para su inserción en base de datos, lo cual haremos ahora mismo en el siguiente tema.

Guardando los registros a base de datos

Ahora la parte que quedo pendiente, guardar en base de datos cada fila que vamos leyendo de nuestro excel.

// Guardamos en base de datos
if (!empty($campo1) || !empty($campo2)) {
	$query = "insert into tabla(campo1,campo2, ...) values('".$campo1."','".$campo2."',...)";

	$result = mysqli_query($conn, $query);
			
	if (empty($result)) {
		$error = true;
	}
}

Como puedes ver esta es la parte más fácil de este post sobre como importar un excel a mysql y mira que no ha sido dificil.

Perfecto! Hemos terminado.

Si este post te fue de utilidad no olvides compartirla en tus redes sociales o dejarnos un comentario si tienes alguna duda respecto a importar un excel a mysql con php y SpreadSheet Reader.

Hasta luego!

Clic para valorar esta información
[Total: 1 Promedio: 1]