páginas web valladolid
  • paginas web
  • publicidad valladolid
  • localizacion agencia de publicidad valladolid

Excel con PHP para Páginas Web

La librería PHPExcel nos permite generar archivos excel con PHP. PHPExcel permite leer y manipular el contenido de una hoja de cálculo hecha con Microsoft Excel.

[ Descargar PHPExcel ]

Funciones Básicas de PHPExcel

$objPHPExcel->getActiveSheet()->getCell("A1")->getValue(): Nos devuelve el texto (getValue()) de la celda A1 (getCell("A1")) de la hoja Excel activa (getActiveSheet()).

$objPHPExcel->getActiveSheet()->setCellValue("A1","Pepe"): Asignamos a la celda A1 (setCellValue()) el valor "Pepe" de la hoja Excel activa (getActiveSheet()).

Leer un Excel con Php y guardar los datos en una base de datos Mysql

Después de descargar la librería PHPExcel, comenzamos con la lectura del Excel. Lo que requiere la inserción de las librerías php:

<?php
// Clases Php
require_once("PHPExcel.php");
require_once("PHPExcel/Reader/Excel2007.php");
?>

Una vez que hemos cargado las librerías de php, debemos cargar la hoja de calculo excel para ello utilizamos el siguiente código en php:

<?php
// Cargando la hoja de cálculo excel
//creamos objeto para leer del excel
$objReader = new PHPExcel_Reader_Excel2007(); 
//cargamos el archivo excel(extensión *.xlsx)
$objPHPExcel = $objReader->load($archivo_loc.$archivo_nom);
// Asignamos el excel activo
$objPHPExcel->setActiveSheetIndex(0);
?>

Cuando ya hemos creado el objeto excel, comenzamos la lectura de los registros, filas o columnas. En el siguiente código recorremos las filas del fichero excel y guardamos los datos en mysql:

<?php
//Obtenemos un listado de usuarios desde un archivo excel
$i=1; //Si existiera una fila con los títulos inicial $i=2
//Recorremos las filas del excel
while($objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue() != ′′)
{	
$nombre = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();
	$email = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
	$telefono = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
	
//inserto los datos en la table usuarios:
$ conexion = mysql_connect("$dbhost", "$dbuser", "$dbpass");
$sql = "INSERT INTO usuarios (nombre, email, telefono) VALUES (′$nombre′, ′$email’, ′$telefono’)";
$rst=mysql_query($sql,$conexion); //Ejecutamos la SQL
if(!$rst) //Comprobamos si hay errores
		die("Error MySQL de Inserción de Datos);
$i++;
}
?> 

Escribir un Excel con Php, extrayendo los datos desde una base de datos Mysql

Después de descargar la librería PHPExcel, comenzamos con la lectura del Excel. Lo que requiere la inserción de las librerías php:

<?php
// Clases Php
require_once("PHPExcel.php");
require_once("PHPExcel/Reader/Excel2007.php");
?>

Una vez que hemos cargado las librerías de php, debemos cargar la hoja de calculo excel para ello utilizamos el siguiente código en php:

<?php
// Cargando el excel
$objPHPExcel = $objReader->load($archivo_loc.$archivo_nom); //cargamos el archivo excel (extensión *.xlsx)
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); //objeto de PHPExcel, para escribir en el excel
?>

Cuando ya hemos creado el objeto excel para su escritura, comenzamos la lectura de los registros desde la base de datos Mysql. Y los escribimos en el archivo excel cade registro en una fila:

<?php
//Extraemos los registros de la base de datos mysql
$conexion = mysql_connect("$dbhost", "$dbuser", "$dbpass");
$sql="SELECT  * FROM usuarios;
$rst=mysql_query($sql,$conexion); //Ejecutamos la SQL
if(!$rst) //Comprobamos si hay errores
die("Error MySQL de Extracción de Datos);
while($fila = mysql_fetch_array($rst))
{
$objPHPExcel->getActiveSheet()->setCellValue("A".$i, $ fila[nombre]);
$objPHPExcel->getActiveSheet()->setCellValue("B".$i, $ fila[email]);
$objPHPExcel->getActiveSheet()->setCellValue("C".$i, $ fila[telefono]);
}
	
$objWriter->save($archivo_loc.$archivo_nom);//guardamos el archivo excel
?>

 

[ Documentación PHPExcel ] [ Más ejemplos con PHPExcel ]

 

« volver a Artículos Web

Comentarios Total 19 comentarios

usuario web J B - Muy clarito para gente novata como en php
Publicado: 15/04/2010 09:36:32

Gracias, muy sencillo hacer un excel con php

usuario web nano - ZipArchive
Publicado: 11/05/2010 12:46:20

Tengo un problema y es que parece que la clase me funcionaba bien pero a la hora de hacer wl writer.save me sale un error.

Me dice: "Class ′ZipArchive′ not found."Es un clase que usa el metodo save del writer y no consigo eliminar el error.Es un infierno esto.

Ayuda please.

usuario web ideasfrescas - Fatal error: Class ′ZipArchive′ not found
Publicado: 11/05/2010 13:48:02

Hola nano,
Creo que el problema que tienes es que no tines activada la librería php_zip.dll.
Para comprobar si está o no funcionando haz esto:
1. Crea un archivo phpinfo.php, (para ver lo que tienes activado en el servidor) con esta linea: guárdelo, por ejemplo en la raíz del servidor, aun que lo puedes guardar donde quieras.
2. Abre este archivo en el navegador, por ejemplo: localhost/phpinfo.php.
3. Ahora se te mostrarán todos los módulso que tienes configurados en tu servidor. Buscando el modulo ′zip′ y si le tienes comprueba que está activado (enabled).
Si es así y te está dando el error, deberás descargarte otra vez la librería por que está dañada, (este es un enlace donde puedes descargarla: dlldll.com/php_zip.dll_download.html).
Y si no tienes activado el módulo en el servidor, siue estos pasos para activarle:
1. descargate la librería, (en el enlace anteriror).
2. abre el php.ini, y descomenta o añade, al final del todo, esta línea:
extension = php_zip.dll
(tambien est la librería: extension=php_zlib_filter.dll, que no se si van unidas o son independientes, si no te funcionara prueba a descargartela he instalarla también.)
3. Reinicia el apache.
Espero que te sirva.

usuario web David - nano - ZipArchive
Publicado: 13/05/2010 18:27:14

Tomado de la documentacion espero te sirva

2. Prerequisites
2.1. Software requirements
The following software is required to develop using PHPExcel:
» PHP version 5.2.0 or newer
» PHP extension php_zip enabled *)
» PHP extension php_xml enabled
» PHP extension php_gd2 enabled (if not compiled in)

*) php_zip is only needed by PHPExcel_Reader_Excel2007, PHPExcel_Writer_Excel2007, PHPExcel_Reader_OOCalc. In other words, if you need PHPExcel to handle .xlsx or .ods files you will need the zip extension, but otherwise not.

usuario web Oscar - ogm
Publicado: 13/07/2010 07:14:24

hola a todos tengo una duda
tengo instalado la vercion php 5.2.6.6 pero quiero probar los ejemplos que bienen en la libreria y me sale este error error Class ′ZipArchive′ not found in C:\Program Files\vtigercrm-5.1.0\apache\htdocs\vtigerCRM\Classes\Reader\Excel2007.php
Alguien que me pudiera apoyar es Urgente

Saludos

usuario web Silvia Herguedas - Fatal error: Class ′ZipArchive′ not found
Publicado: 13/07/2010 08:30:28

Hola Oscar,
lo que te está pasando es que no tines la librería php_zip.dll en tu host.
Descargatela en cualquier página de dll luego edita el php.ini (extension=php_zip.dll) y reiniciar el servidor para que lo puedas probar otra vez.
yo tambien tengo la libreria zlib_filter (extension=php_zlib_filter.dll), que si no te finciona, haz lo mismo con esta.
un saludo

usuario web Oscar - omg
Publicado: 13/07/2010 17:33:53

Hola gracias

No todos los ejercicios de test necesita esa libreria ya que en unos si funciona correctamente

Muchas gracia por tu ayuda

usuario web Oscar - Fatal error: Class ′ZipArchive′ not found
Publicado: 13/07/2010 17:50:15

Hola Sivia
Antes de descargar la dll me fije en el php.ini y si viene la libreria
(;extension=php_zip.dll) duda tendria que descargarla nuevamente, pero la libreria (extension=php_zlib_filter.dll) esa no bien por lo cual la descargare, disculpa pero soy un novato en php nunca he programado pero bueno por algo se comienza

usuario web Gracias silvia - Class ′ZipArchive′ not found
Publicado: 13/07/2010 19:24:50

Ya cree un phpinfo.php y no viene la ligreria la descargare pero lo mas raro que en el ; php.ini si viene ;extension=php_zip.dll tambien extension=php_zlib_filter.dll
Saludos

usuario web Oscar - Class ′ZipArchive′ not found
Publicado: 13/07/2010 22:23:10

En la version de php 5.2.6 si puedo cargarle la php_zip.dll, alguien que me acesore como insatalarla ya la descargue pero no se donde guardarla

Muchas gracias por su ayuda

usuario web Oscar - Class ′ZipArchive′ not found
Publicado: 14/07/2010 00:14:27

Gracias Silvia por tu ayuda ; indagando mas aya ; ya pude activar el php_zlib.dll
Esta super buena esta libreria

Saludos

usuario web Osa - No lee el archivo de excel
Publicado: 16/07/2010 07:51:53

Alguien que me poye
Todo funcionaba bien cuando de repente ya no quiso leer e archvo de excel
se quedo en esta linea
$objPHPExcel = $objReader->load($archivo_loc.$archivo_nom);
y no me arroja ningun error ya no avanza apartir de ahi.
que podra ser

usuario web Silvia Herguedas - No lee el archivo de excel con PHPExcel
Publicado: 16/07/2010 08:29:19

hola oscar,
posiblemente lo que te pasa es que no encuentra el archivo en tu host.
ten en cuenta que a esa función hay que pasarle rutas relativas al archivo que ejecuta el script con el que trabajas, por lo que hay que tener en cuenta los ′../′ porque como te pases o no lleges no va ha encontrarle.
de todas formas en el artículo no lo comenta, pero ($archivo_loc.$archivo_nom); lo debes sustituir por tus variables o por una cadena con la ruta relativa al excel.
ejemplo:
$objPHPExcel = $objReader->load("../../../ruta-al-archivos/mi-arvhivo-de-prueba.xls");

usuario web Hola - No lee el archivo de excel
Publicado: 16/07/2010 17:29:28

Gracias
Aqui mas a detalle tengo un formulario para saber que archivo xlsx va a leer



y en el php lo cacho con esta linea
$archivo = $_FILES["archivo"][′tmp_name′];
despues lo meto a la linea para que lo lea
$objPHPExcel = $objReader->load($archivo);
pero no lo lee no se que sera a lo mejor el modo de cachar la ruta del archivo
y hago otra prueba poniendo en duro el archivo y tampoco lo le
$objPHPExcel = $objReader->load("C:\Users\Oscar\Desktop\roles.xlsx");

No se que pueda ser a lo mejor la dll esta dañada cree un archivo phpinfo.pho zlib y esta en enabled
Alguna sugerencia

usuario web Oscar - No lee el archivo de excel con PHPExcel
Publicado: 19/07/2010 03:30:00

Aqui mas a detalle tengo un formulario para saber que archivo xlsx va a leer



y en el php lo cacho con esta linea
$archivo = $_FILES["archivo"][′tmp_name′];
despues lo meto a la linea para que lo lea
$objPHPExcel = $objReader->load($archivo);
pero no lo lee no se que sera a lo mejor el modo de cachar la ruta del archivo
y hago otra prueba poniendo en duro el archivo y tampoco lo le
$objPHPExcel = $objReader->load("C:\Users\Oscar\Desktop\roles.xlsx");
No se que pueda ser a lo mejor la dll esta dañada cree un archivo phpinfo.pho zlib y esta en enabled
Alguna sugerencia

usuario web Silvia Herguedas - No lee el archivo de excel con PHPExcel
Publicado: 19/07/2010 13:06:32

hola oscar, por lo que veo, tu problema es dónde y cómo usas el archivo excel:
1. primero sube al servidor el archivo que te viene del formulario como lo hagas normalmetne. No trabajes nunca con el temporal. Guarda tu archivo(una vez subido) en alguan carpeta de tu web (no en tu escritorio): para ello puedes usar esta función:
$archivo_temp = $_FILES["archivo"][′tmp_name′];
$archivo_nom = $_FILES[′archivo′][′name′];
$archivo_loc = "url-relativa-a-la-carpeta-que-gestiona-la-subida-del-archivo";
move_uploaded_file($archivo_temp, $archivo_loc.$archivo_nom); (*)
(*)quita al nombre del archivo los acentos, espacios y caracteres raros.

2. Para trabajar con el excel y la librería PHPExcel, usa el archivo que acabas de subir:
$objPHPExcel = $objReader->load("../../".$archivo_loc.$archivo_nom);
dando la url relativa al archivo que tiene el script que hace el excel, es decir, por ejemplo: si el archivo que hace el excel está en:
/mi-dominio/admin/excels/excel.php
y tu el archivo.xlsx que acabas de subir le as guardado en:
/mi-domino/img/excel/archivo.xls, la función para crear el objeto excel es:
$objPHPExcel = $objReader->load("../../img/excel/archivo.xls");

Puedes controlar que se ha subido correctamente el archivo que viene del formulario con esta función: file_exists($archivo_loc.$archivo_nom), que devuelve true si existe el archivo en la carpeta o false si no le encuentra.

usuario web Oscar - No lee el archivo de excel con PHPExcel
Publicado: 19/07/2010 23:02:03

Gracias Silvia
Pero no me funciono
Relaice todo lo que me indicaste el archivo lo deposite en una carpeta, y correcto si se deposito, despues lo mando llamar $objPHPExcel = $objReader->load($archivo_loc.$archivo_nom); pero sigue sin pasar de esa linea de codigo
Lo mas raro es que en otro proyecto hago lo mismo que me indicaste anteriormente y si lo lee todo completo hasta pongo la ruta en duro asi $objPHPExcel = $objReader->load(′C:\Users\Oscar\Desktop\layoutusuarios.xlsx′); y tambien lo lee correctamente, Pero en el que estoy trabajando actualmente no me lo lee La librerias estan asi en mi proyecto actual
Zip enabled
Extension Version $Id: php_zip.c,v 1.1.2.38 2007/08/06 22:02:32 bjori Exp $
Zip version 2.0.0
Libzip version 0.7.1
-----
ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3
No se que pueda ser

usuario web Silvia Herguedas - No lee el archivo excel con PHPExcel
Publicado: 20/07/2010 13:46:25

Hola Oscar,
1. revisa que los includes a las librerias de PHPExcel estan correctos (tienen que estar en la misma carpeta donde se ejecuta el script):
require_once("PHPExcel.php");
require_once("PHPExcel/Reader/Excel2007.php");
2. haz: echo file_exists($archivo_loc.$archivo_nom);
sustituyendo $archivo_loc y $archivo_nom por las variables que tú estas usando en la línea que carga el ObjExcel ($objPHPExcel = $objReader->load($archivo_loc.$archivo_nom);)
3. asegurate que donde guardas el archivo que subes por el formulario tenga permisos de escritura.
4. si en otros proyectos te funciona todo, el problema no está en las librerias que expones de zlib.
5. si sigue sin funcionar prueba a ponerlo todo en la misma carpeta: archivo excel que subes, librerias PHPExcel y script que gestiona el excel.
6. si nada funciona pon el código para ver que haces, ya que no se me ocurre nada más.

usuario web Oscar - archivo excel con PHPExcel
Publicado: 21/07/2010 18:12:24

Gracias Silvia por tu ayuda
Ya quedo solucionado y si era un require_once
Saludos

Comentar

En este blog los comentarios están moderados. Por favor, evita los comentarios ofensivos u obscenos por que serán borrados.

  • Imagen de seguridadRefrescar imágen

  • * Campos obligatorios