Excel con PHP

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:

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:

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:


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:

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:

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:

 

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

 

Comentarios

Enviado por nano (no verificado) el

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.

Enviado por ideasfrescas (no verificado) el

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.

Enviado por David (no verificado) el

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.

Enviado por Oscar (no verificado) el

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

Enviado por Silvia Herguedas (no verificado) el

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

Enviado por Oscar (no verificado) el

Hola gracias

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

Muchas gracia por tu ayuda

Enviado por Oscar (no verificado) el

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

Enviado por Gracias silvia (no verificado) el

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

Enviado por Oscar (no verificado) el

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

Enviado por Osa (no verificado) el

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

Enviado por Silvia Herguedas (no verificado) el

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");

Enviado por Hola (no verificado) el

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

Enviado por Oscar (no verificado) el

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

Enviado por Silvia Herguedas (no verificado) el

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.

Enviado por Oscar (no verificado) el

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

Enviado por Silvia Herguedas (no verificado) el

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.

Enviado por Leonardo (no verificado) el

Excelente post me ha funcionado todo, menos una cosa que necesito.... es que yo no quero guardar el archivo excel en el servidor sino que por medio de la etiqueta input de tipo file me lea el archivo excel.... he intentado de varias formas y no la encuentro... alguien me podria ayudar estas porfavor... se supone que con esto me deberia funcionar:
$objPHPExcel = $objReader->load($_FILES[′archivo′]);
pero me sale el error de que el archivono existe y que en esa linea esta indefenida.. algo asi... entonces como lo haría?

Enviado por paty (no verificado) el

no me sirve quiero es crear un acrchivo excel
// Clases Php
require_once("PHPExcel.php");
require_once("PHPExcel/Reader/Excel2007.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

//Extraemos los registros de la base de datos mysql
$server="localhost";
$database="actividades";
$dbuser="root";
$dbpass="";

$conexion=mysql_connect($server,$dbuser,$dbpass);
mysql_select_db($database,$conexion);

//$conexion = mysql_connect("$dbhost", "$dbuser", "$dbpass");

$sql="SELECT * FROM registros";
$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[usuario]);
$objPHPExcel->getActiveSheet()->setCellValue("B".$i, $ fila[area]);
$objPHPExcel->getActiveSheet()->setCellValue("C".$i, $ fila[tipo_actividad]);
}
$objWriter->save($archivo_loc.$archivo_nom);//guardamos el archivo excel
?>
puse la carpetas classes dentro de pear que es donde ser ponen las carpetas que se han bajado para creacion de excel pero al ejecutar la pagina me sale esto

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or ′$′ in on line 29

Enviado por patricia (no verificado) el

bueno ya no sale eso a hora me sale esto
Fatal error: Call to a member function load() on a non-object in

require_once ("conexion.php");

// Clases Php
require_once("Classes/PHPExcel.php");
require_once("Classes/PHPExcel/Reader/Excel2007.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

$sql="SELECT * FROM registro";
$rst = consultar_mysql(′actividades′, $sql);

$fil = mysql_num_rows($rst);
//echo $fil;

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[usuario]);
$objPHPExcel->getActiveSheet()->setCellValue("B".$i, $fila[area]);
$objPHPExcel->getActiveSheet()->setCellValue("C".$i, $fila[tipo_actividad]);
}
$objWriter->save($archivo_loc.$archivo_nom);//guardamos el archivo excel
?>

repito yo quiero es crear un archivo excel

Enviado por Silvia Herguedas (no verificado) el

Hola Patricia, este error: "Fatal error: Call to a member function load() on a non-object in"
me parece que tu problema está en que no está encontrando las librerias de phpEcel, estás segura de que éstas, están en la carpeta que está al mismo nivel que el script?
es decir, donde se está ejecutando tu script existe esta estructura?
Classes/PHPExcel.php
Classes/PHPExcel/Reader/Excel2007.php

Enviado por Juan David Cadavid (no verificado) el

Saludos a todos y todas:

Mi pregunta es la siguiente:

Ya me funciona, me guarda y todo lo que pasa es que primero me toco que crear el archivo a mi de Excel vacío y ponerlo en el lugar que yo quería darle la dirección en PHP y si lo necesito que se me cree solo como hago.

Por otro lado como hago para que el archivo habra automaticamente para poderlo ver. Con la función exec ( "Contactos.xlsx" ); no me funciona, se queda esperando y esperando y nunca lo habre.

Si pueden responderme mis preguntas se los agradecería mucho.

Un cordial saludo y me despido

Enviado por Silvia Herguedas (no verificado) el

Hola Juan, tu solución estaria en este ejemplo (le amoldas a tu código):

$fecha = date(′m-d-Y′);
header(′Content-type: application/vnd.ms-excel′);
header("Content-Disposition: attachment; filename=arx_$fecha.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo "Ideasfrescas.es";
echo "www.ideasfrescas.es";

Enviado por Juan David Cadavid (no verificado) el

Hola Silvia.

La verdad lo único que necesito es limpiar el documento de excel existente y cargarlo con nuevos datos, lo que pasa es que tengo que realizar reportes y los tengo que hacer es dependiendo de las selccion del usuario, y si la nueva seleccion tiene menos datos o registros que lo existente en el excel me lo carga con los nuevos registros y los viejos.

Necesito primero limpiar el excel existente y cargarlo como nuevo, por eso es mi pregunta.

La de como cargaro automatcamente me funciono asi:

header ( ′Location: ../../Carpeta donde se encuentra/Nombre del documento.tipo de documento′ );

si me puedes ayudar a limpiar el excel antes de cargarlelos nuevos datos te lo agradecería mucho.

Cordial saludo

Enviado por Silvia Herguedas (no verificado) el

Hola Juan David, lo que tendrias que hacer en ese caso es, nada más abrir el excel para escribir, recorrerle por todas las celdas que estes usando para ponerlas a vacio:

//1º: cargar librerias phpExcel
//2º: crear objeto: $objPHPExcel
//3º: limpiar el excel para cargar nuevos datos
$i=2;//esto indica desde que fila se a de poner a vaciar celdas, (ya que puedes tener la primera fila para las cabeceras y esa no es necesario inicializar siempre)
//este valor variará en función de los registros que pueda tener la tabla, pon siempre más del total
while($i menorQue 10000)
{
$objPHPExcel->getActiveSheet()->setCellValue("A".$i, "");
$objPHPExcel->getActiveSheet()->setCellValue("B".$i, "");
$objPHPExcel->getActiveSheet()->setCellValue("C".$i, "");
$objPHPExcel->getActiveSheet()->setCellValue("D".$i, "");
//... hasta las columnas que utilices
$i++;
}
//4º: cargar en el excel los nuevos datos
//5º: guardar el excel
//6º: lanzarle para abrile (perfectmente con lo que comentas).

espero que sea lo que necesitas

Enviado por Juan David Cadavid (no verificado) el

Hola Silvia:

Estoy muy agradecido por tu colaboración, me ha sido de mucha ayuda. Lo implementaré.

Por otra parte tengo un grave problema y me gustaría comentarlo para saber en donde puedo buscar llevo dos días buscando y nada que encuentro:

Lo que pasa es que tengo una tabla con usuarios en MySql y quiero traerla a una tabla en PHP, nada del otro mundo, lo difícil es que a cada registro que traído le debo añadir un botón "ver", para que a ese registro lo pueda actualizar o eliminar, pero no se como hacer los botones dinámica mente que me traiga ese datos del usuario

Enviado por Silvia Herguedas (no verificado) el

Hola Juan David,
Para solucionar tu consulta lo que yo haría sería:
Poner un formulario por cada usuario, y enviarle al hacer click en editar o borrar.
Has de crear una variable ($i) que será la que haga que cada formulario tengan un id único y que la página que recibe identifique al usuario concreto. De esta forma sólo se envía el formulario con todos los datos del usuario de ese id. (a este código le he quitado los símbolos mayor y menor de las etiquetas de html y php, asique lo tienes que montar bien)
$i=1;//variable que va a identificar cada form de usuario
while($fila=mysql_fetch_array($rst))
{
form name="form" id="form? echo $i; ?" accion="lo-que-sea.php"
input type="hidden" name="iduser" id="iduser" value="? echo $fila["id"]; ?"
input type="hidden" name="accion" id="accion" value="editar"
? echo $fila["nombre"] ?
input type="button" name="btneditar" id="btneditar" value="editar" onclick="javascript:document.form? echo $i; ?.submit();"
input type="button" name="btnborrar" id="btnborrar" value="borrar" onclick="javascript:document.form? echo $i; ?.accion.value="borrar";document.form? echo $i ?.submit();"
$i++;
}
El archivo que recibe el formulario deberá tener un switch donde controles lo que haga cuando edita ($_POST[?accion?] == ?editar?) y lo que haga cuando borra ($_POST[?accion?] == ?borrar?) y el campo iduser ya le dice que registro de la base de datos has de editar o borrar.

Enviado por Juan David Cadavid (no verificado) el

Hola Silvia:

La verdad no me lo imaginé así, pero de verdad me salvó la vida. Mil y un millo de gracias. Con esto me puedo defender bastante, si necesita algo usted también no dude en decírmelo que yo le ayudaré, si no la sé la investigo. Es un ángel que me salvó la vida. No tendré como agradecerlo.

Otra vez un millón de gracias.

Enviado por Toyzafao (no verificado) el

tengo las librerias y para arrojar un excel con datos asignados funciona de maravilla, sin embargo cuando deseo leer un archivo de una ubicacion y sobre el llenar datos no puedo, todo lo hago mediante el controlador aqui se los muestro:

function genera_excel(){
if(!$this->session->userdata(′codigo′)==′′ and !$this->session->userdata(′codigo′)==′′)
{
//declaracion de mis liberrias
$this->load->library(′PHPExcel′);
$this->load->library(′PHPExcel/IOFactory′);
//se crea el objeto
$objPHPExcel = new PHPExcel();
// creo el objeto reader
$objReader = IOFactory::createReader(′Excel5′);
//cargo el archivo xsl
$objPHPExcel = $objReader->load("C:\actas.xls");
//esto es una prueba aqui le agrego a la primera casilla cualquier cosa para probar
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue(′A1′, ′donde estas′);
//creo mi salida y mediante las cabeceras vuelvo a crear un archivo xsl
$objWriter = IOFactory::createWriter($objPHPExcel, ′Excel5′);
header(′Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet′);
header(′Content-Disposition: attachment;filename="01simple.xls"′);
header(′Cache-Control: max-age=0′);
$objWriter->save(′php://output′);
//$objWriter->save(str_replace(′.php′, ′.xls′, __FILE__));
//$this->load->helper(′url′);
//$this->load->view(′Excel.php′);
}else{
$this->load->helper(′url′);
$this->load->view(′vLoginAlu.php′);
}
}

com podran observar esta bien... bueno la verdad es que no esta bien pero no veo el error, lo que arroja este codigo es que la ruta que especifico para cargar el archivo no existe y problemas con la libreria OLERead
ahora bien no se si sera que en codeigniter para que no cause problemas se le tienen que borrar a las clases una parte del codigo, obviamente si lo e hecho pero ni asi me funciona si alguien tiene alguna respuesta por favor .. se lo agradeceria por toda la eternidad.

Enviado por Silvia Herguedas (no verificado) el

hola Toyzafao, yo no he trabajado nunca con codeigniter y tampoco lo hago ya con Excel5 puesto que siempre me da algún error de formato (aunque funcione).
Pero el proceso es el mismo.
Vamos por partes, lo que comentas es que uno de los errores es, que la ruta que especificas para cargar el archivo no existe, pues eso debe ser esta línea:
$objPHPExcel = $objReader->load("C:\actas.xls");
yo te recomiendo que no trabajes con rutas absolutas desde "C:\" hazlo con relativas a donde se ejecuta el script de php, ya que esa ruta si trabajas con un servidor linux no existe, y si fuera uno windows el archivo actas.xls debe estar en raíz y si te da el error no está.
Por otra parte,no se qué problemas puedes tener con la libreria OLERead, ya que si has cargado IOFactory se cargan todas. Especificanos un poco más.
Lo que si que he detectado es que al adaptar tu código a la forma en que yo trabajo no me funcionaba. He tenido que crear el objeto objWriter después de las cabeceras (headers). Y cambiar la de Content-Type por esta línea:
header(′Content-Type: application/vnd.ms-excel′);
Porque al archivo que intentaba abrir con el nombre que yo le asigno le concatenaba la extensión (*.xlsx), es decir, me intentaba abrir un archivo con este nombre: ejemplo.xls.xlsx.
Y así me ha funcionado perfectamente, aunque con muchos errores de formato.... (por ser Excel5).

Enviado por Juan David Cada... (no verificado) el

Hola a todos:

Escribo este mensaje por que estoy desesperado y antes me han ayudad por acá. la verdad es que tengo un select de días y lo recogo para guardad el valor numérico que le he asignado pero la cuestión es que necesito traer un datos desde la base de datos y mostrarlo en la página pero a la hora de darle el dia que me lo ponga en la posición el selected del valor que guardé no me lo muestra, la única solución es que le ponga sel selected cuando lo creo pero es dependiendo del valor que traiga eso serían como 31 if y es muy engorroso y quedaría muy largo. si uno de usted sabe la respuesta porfa díganmela o me pueden mostrar donde la puede buscar que estoy altamente desesperado.

Gracias y me despido

Enviado por Silvia Herguedas (no verificado) el

hola Juan, tu solución sería con un for: (montalo bien, he quitado los símbolos mayor y menor de las etiquetas de html y php)
select name="dia" id="dia"
option value="0"? if($fila["id"] != "" and $fila["dia"] == 0) echo " selected=\"selected\""; ?-------/option?
for($i = 1; $i menorQue 31; $i++)
{
?option value="? echo $i; ?"? if($fila["id"] != "" and $fila["dia"] == $i) echo " selected=\"selected\""; ?? echo $i; ?/option?
}
?/select

con esto cuando esté seleccionado un usuario, y además el día sea igual a lo que tengo en la bbdd, que le seleccione para el resto no.
Y ya lo tienes solucionado con 5 líneas.

Enviado por ObjetivoPHP (no verificado) el

Hola, para los que necesiten tipo una rutina que exporte e importe de excel a mysql en un servidor con php, la pueden descargar de objetivophp.com/?page_id=146

Saludos

Enviado por jorge (no verificado) el

Hola necesito ayuda, tengo el script de como insertar datos pero solo me inserta el primer dato de mi excel, los demas ya no y sale en mi explorador la leyenda de error en la inserción, no se que hacer lo copie tal cual
ayuda por favor

Enviado por thor (no verificado) el

Hola, lo primero daros las gracias por vuestra atención.
Tengo un problema, estoy utilizando PHPExcel_Writer_Excel2007, pero me gustaría definir un tipo por defecto para las celdas, para que todas fueran de tipo texto, trabajo con números de cuenta y me los identifica todos como tipo numérico.
¿Sabeis la directiva que tengo que darle al objeto PHPExcel_Writer_Excel2007?

Un saludo y muchas gracias por vuestra ayuda.

Enviado por Anothnio (no verificado) el

Hola, que alegría ver un hilo actualizado y con movimiento, a lo que voy ;)

Consigo realizar la creación del fichero, incluso puedo cargarlo bien con PHPExcel_Reader_Excel2007, pero me gustaría poder ejecutarlo directamente, para que se generara para descargar ("con las cabeceras de xls"). Lo que busco es obtener un .php que emita una excel dinámicamente sin dejar registros en el servidor. ¿Es esto posible? ¿Después de $objPHPExcel = $objReader->load("./transportista.xlsx")... no puedo realizar un $objPHPExcel->exportar???

Muchas Gracias :)

Enviado por Daniel Montoya (no verificado) el

Excelente compa...un agradecimiento inmenso desde colombia, llevaba 3 noches sin dormir por esto.....mas claro no lo pudiste poner!!!

Saludos!!

Enviado por Silvia Herguedas (no verificado) el

Hola Leonardo, me parece que tu problema viene por que $_FILES, es un array bidimensional, y por tnato te falta un valor más, ejemplo:
$archivo = $_FILES["nbCampoFormulario"][′tmp_name′];//nombre temporal que le asigna el servidor para subir el archivo.
$archivo_type = $_FILES["nbCampoFormulario"][′type′];//tipo del archivo que viene por post: gif, jpg...
$archivo_size = $_FILES["nbCampoFormulario"][′size′];//tamaño del archivo que viene por post
$archivo_name = $_FILES["nbCampoFormulario"][′name′];//este es el nombre del archivo que viene por el post

Esta última opción es la tuya.
Recuerda también que el formulario que va a enviar el archivo debe tener la propiedad: enctype=multipart/form-data.
Un saludo

Enviado por Leonardo (no verificado) el

Hola Silvia, disculpa, es que no me lee el archivo que se sube por el input tipo "file" y tengo el metodo post, lo de multipart/data tambien y mira este error:
Fatal error: Uncaught exception ′Exception′ with message ′Could not open C:\xampp\tmp\php598C.tmpventasygastos.xlsx for reading! File does not exist.′ in C:\xampp\htdocs\Telesolin\PHPExcel\Reader\Excel2007.php:339 Stack trace: #0 C:\xampp\htdocs\Telesolin\ExceltoSql.php(13): PHPExcel_Reader_Excel2007->load(′C:\xampp\tmp\ph...′) #1 {main} thrown in C:\xampp\htdocs\Telesolin\PHPExcel\Reader\Excel2007.php on line 339
y mira como lo tengo:
require_once("PHPExcel.php");
require_once("PHPExcel/Reader/Excel2007.php");
$archivo_loc = $_FILES["archivo"][′tmp_name′];
$archivo_nom = $_FILES["archivo"][′name′];
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load($archivo_loc.$archivo_nom);
sera que solo basta con $archivo_nom = $_FILES["archivo"][′name′]; ? y no mas? o que tengo que hacer al respecto... agradesco mucho su colaboracion Silvia

Enviado por Leonardo (no verificado) el

Gracias Jorge Hermano bendiciones... si era solo localizar el archivo que esta en temporal... yo pense que era con el nombre .... pero si era asi :D

Enviado por Carlos (no verificado) el

hola estoy usando el código con unas pequeñas modificaciones:

Pero al ejecutarlo da los siguientes errores

Notice: Undefined variable: objPHPExcel in Prueba\crea_excel2.php on line 24

Fatal error: Call to a member function getActiveSheet() on a non-object in crea_excel2.php on line 24

Alguien tiene idea de como puedo solucionar esto?

Enviado por Jorge - Ideas F... (no verificado) el

Hola Carlos,
parece ser que no está incluyendo las librerías. Repasa las rutas de las mismas.

require_once("PHPExcel.php");
require_once("PHPExcel/Reader/Excel2007.php");

Enviado por Carlos (no verificado) el

Hola Jorge, muchas gracias por tu pronta respuesta verifique y las librerias están que la ubicación exacta que especifique en el código de hecho pruebo con esta rutina:

y funciona perfecto pero cuando pruebo con la que envie ateriormente:

no funciona me sigue disparando los mismos errores:
Notice: Undefined variable: objPHPExcel in crea_excel2.php on line 25

Fatal error: Call to a member function getActiveSheet() on a non-object in crea_excel2.php on line 25

ojala me puedan ayudar, gracias por todo.

Enviado por juan (no verificado) el

mkeale el mismo error de oscar donde die
$objPHPExcel = ($objReader->load($archivo_loc.$archivo_nom));
que ago para que me funcione

Enviado por juan (no verificado) el

mesale error
$objPHPExcel = ($objReader->load($archivo_loc.$archivo_nom));
que ago que no se que hacer

Enviado por Silvia Herguedas (no verificado) el

Hola Juan,
has probado con todas las opciones que le comentamos a Oscar?
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");
las variables $archivo_loc y $archivo_nom las has de sutituir por las tuyas, con valores relativos a donde ejecutes tu script, es decir, 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");

Enviado por Javier Guevara (no verificado) el

Buenas noches estoy utilizando su código de esta manera:

Me muestra este error:
Fatal error: Call to a member function load() on a non-object in C:\xampp\htdocs\Vuelos\tareas\excelvuelos.php on line 24
PHPExcel.php y carpeta PHPExcel están en la misma carpeta donde ejecuto el php para generación de excel.
Qué podrá ser? Les agradezco su ayuda.