Al querer todo más automatizado en estos tiempos, comenzamos a requerir de nuevas funciones adecuadas a php con otra herramienta como excel, pdf o csv.
En este tutorial vamos a mostrar un ejemplo sencillo de como usar las cabeceras dentro de php para formar y crear un archivo .csv y exportarlo a nuestra pc.
Para poder crear un archivo .csv desde nuestro php debemos tener en cuenta los headers o cabeceras.
Creamos el nombre del .csv en una variable llamada $Name y los titulos que van a llevar cada columna en otra variable llamada $Datos.
$Name = 'Reporte_UltimaCuotaPaga.csv'; $FileName = "./$Name"; $Datos = 'NOMBRE;APELLIDO;TELEFONO;CIUDAD'; $Datos .= "\r\n";
Cuando tengamos esto traemos todas las cabeceras que van a formar el .csv ; esto lo que hace es obligar al archivo a descargarse y a abrirse en excel. Podemos escoger abrirlo como csv en blog de notas. ya es a nuestro gusto.
En este ejemplo se usa excel como visor del archivo.
//Descarga el archivo desde el navegador header('Expires: 0'); header('Cache-control: private'); header('Content-Type: application/x-octet-stream'); // Archivo de Excel header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Description: File Transfer'); header('Last-Modified: '.date('D, d M Y H:i:s')); header('Content-Disposition: attachment; filename="'.$Name.'"'); header("Content-Transfer-Encoding: binary");
Con esto ya podemos descargar el documento que necesitemos en .csv; para hacer el ejemplo más completo vamos a crear una consulta en sql que se encargara de traer los datos para el archivo. Se espera que se tenga una conexión a una base de datos previa.
//conection: $link = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link)); /**1. consultar sap_maestro_cartera_v3 **/ $sSQL = "SELECT nombre, apellido, telefono, ciudad FROM datos_personales "; $RsSql = $link->mysqli_query($sSQL);
Se crea un while que recorra todas las filas que traerá la consulta usualmente yo utilizo mysql_fetch_array pero quería mostrarles otra forma de hacerlo y también es muy sencillo es con mysql_fetch_object. Hay que tener en cuenta que en este caso se va a tratar al resultado como objetos llamándolos en la variable #Datos que es la que vamos a imprimir al final del while.
while($oRow = mysql_fecth_object($RsSql) ){ $Datos .= "$oRow->nombre;$oRow->apellido;$oRow->telefono;$oRow->ciudad; "; $Datos .= "\r\n"; }#end while echo $Datos;
El script completo quedaría de la siguiente manera.
Datos_personales.php
//conection: $link = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link)); $Name = 'Reporte_UltimaCuotaPaga.csv'; $FileName = "./$Name"; $Datos = 'NOMBRE;APELLIDO;TELEFONO;CIUDAD'; $Datos .= "\r\n"; //Descarga el archivo desde el navegador header('Expires: 0'); header('Cache-control: private'); header('Content-Type: application/x-octet-stream'); // Archivo de Excel header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Description: File Transfer'); header('Last-Modified: '.date('D, d M Y H:i:s')); header('Content-Disposition: attachment; filename="'.$Name.'"'); header("Content-Transfer-Encoding: binary"); /**1. consultar sap_maestro_cartera_v3 **/ $sSQL = "SELECT nombre, apellido, telefono, ciudad FROM datos_personales "; $RsSql = $link->mysqli_query($sSQL); while($oRow = mysql_fecth_object($RsSql) ){ $Datos .= "$oRow->nombre;$oRow->apellido;$oRow->telefono;$oRow->ciudad; "; $Datos .= "\r\n"; }#end while echo $Datos;
gracias por tu aporte llevaba medio dia buscando hacer funcionar ese code.. gracias ..
ResponderEliminarsaludes desde nicaragua
De nada para eso estamos. Saludos
ResponderEliminarYo remplazaria la ultima linea por echo utf8_decode($Datos); para que aparezcan con acento.
ResponderEliminarTiene razón gracias por el complemento, buen aporte.
EliminarPerdon me falto decir, excelente aporte.
ResponderEliminarOk. :-)
EliminarEste codigo sirve para otros manejadores de base de datos?
ResponderEliminarMe fué muy útil "/r/n"
ResponderEliminarGrácias, excelente aporte
si el resultado son varias lineas, como hago para que aparezcan? solo me sale la última.
ResponderEliminarProbablemente se te está pasando concatenarlas.
EliminarEsto si es mucha maravilla, funciona igual para SQL gracias.
ResponderEliminarNecesito hablar contigo andrescastillo1985@gmail.com de https://www.achotv.com
ResponderEliminarya esta obsoleta en navegadores mas recientes , los header, pero se recomienda usar y al pricnipio y fin del codigo
ResponderEliminar