Foros del Web » Programando para Internet » PHP »

PHPExcel

Estas en el tema de PHPExcel en el foro de PHP en Foros del Web. He estado probando la libreria de PHPExcel para leer los archivos .xlsx (Excel 2007) pero no puedo leerlos y hago paso a paso lo que ...
  #1 (permalink)  
Antiguo 10/01/2011, 17:38
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 3 meses
Puntos: 0
Información PHPExcel

He estado probando la libreria de PHPExcel para leer los archivos .xlsx (Excel 2007) pero no puedo leerlos y hago paso a paso lo que me dice ahí, pero no se si se deba a que uso un servidor de linux y no de microsoft, alguien que pudiese ayudarme por favor.

<? require_once('../inc/Classes/PHPExcel.php'); ?>
<? require_once('../inc/Classes/PHPExcel/IOFactory.php');
require_once('../inc/Classes/PHPExcel/Reader/Excel2007.php'); ?>
<? $excelReader = PHPExcel_IOFactory::createReader('Excel2007');
$excel = $excelReader->load('../inc/Classes/encuesta.xlsx');
print "hola";
print('<table border="1">');
for ($i = 2; $i < 120; $i++) {
print('<tr>');

print('<td>');
print($excel->getActiveSheet()->getCell('A' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('B' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('C' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('D' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('E' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('F' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('G' . $i)->getValue());
print('</td>');

print('<td>');
print($excel->getActiveSheet()->getCell('H' . $i)->getValue());
print('</td>');

}
print('</table>');

?>


y ese es el codigo que uso, pero no se si sea por que mi servidor sea linux
  #2 (permalink)  
Antiguo 10/01/2011, 18:09
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: PHPExcel

Con PHPExcel no importa el servidor que tengas, ya sea linux, windows funciona indistintamente...

Te marca algún error...
Si no es así pone en el script error_reporting(E_ALL); que capaz que tu servidor no lanza los errores por seguridad...
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 10/01/2011, 19:01
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: PHPExcel

ok mira, no me marca ningun error, pero no se si este mal entonces el codigo, me hace falta algo?
  #4 (permalink)  
Antiguo 10/01/2011, 19:12
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: PHPExcel

Código PHP:
Ver original
  1. error_reporting(E_ALL); // para que marque los errores
  2. // Incluís los archivos necesarios
  3. include_once 'PHPExcel.php';
  4. include_once 'PHPExcel/IOFactory.php';
  5.  
  6. $obj_Reader     = PHPExcel_IOFactory::createReader('Excel2007');
  7. $obj_Reader ->setReadDataOnly(true);
  8. $obj_PHPExcel = $obj_Reader->load($dirArchivoExcel);
  9.  
  10. $obj_Worksheet= $obj_PHPExcel->getActiveSheet();
  11.  
  12. // y despues podes levantar los valores de las siguientes formas
  13. $valor      = $obj_Worksheet->getCellByColumnAndRow($columna, $fila)->getValue();
  14.  
  15. $valor  = $obj_Worksheet->getCellByColumnAndRow($columna, $fila)->getCalculatedValue(); // Este si existen formulas las calcula antes de retornar el valor
  16. // Tambien sirve tu forma de levantar los valores
  17. $valor = $objPHPExcel->getActiveSheet()->getCell('B8')->getValue(); // ej. B8 pero tu código 'H' . $i tiene que funcionar...
$objPHPExcel->getActiveSheet() esto se puede sustituir por $obj_Worksheet

Bueno esto mas o menos hago yo....
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Última edición por portalmana; 10/01/2011 a las 19:22
  #5 (permalink)  
Antiguo 10/01/2011, 19:41
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: PHPExcel

sigue sin mostrar nada en pantalla, no se en verdad a que se deba que no me muestre datos, lo que intento hacer es tomar un archivo xlsx de donde este, le especifico la ruta pero no me lo lee, ni me pone los datos en pantalla en el navegador solo aparece en blanco, y bueno ya que me dijste de que funciona igual para linux y windows entonces no se por que no me lea otro archivo, si le especifico la ruta, estoy en problemas xD!!!
  #6 (permalink)  
Antiguo 10/01/2011, 19:41
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: PHPExcel

de antemano muchas gracias por la ayuda!!!
  #7 (permalink)  
Antiguo 10/01/2011, 19:51
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: PHPExcel

Lo raro es que no lance ni un error, ni nada... Pero eso si te aseguro que funciona en linux y windows pues yo tengo una rutina que se basa en PHPExcel y exporta de excel a mysql.... Se llama Deame3p por si la quieres buscar...

Ahora supuestamente los pasos parecen los correctos.... Te mande un codigo de como lo utilizo pero es muy parecido a mi de ese modo me funciona...

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #8 (permalink)  
Antiguo 10/01/2011, 19:57
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: PHPExcel

oye por ultimo me podrias mostrar codigo del que tu usas para probar haber si me funciona, codigo para leer un archivo xlsx

GRACIAS
  #9 (permalink)  
Antiguo 10/01/2011, 20:04
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: PHPExcel

Bueno de aquí te lo puedes descargar es gratis... Asi que puedes hacer lo que quieras con el...

Eso si si mejoras algo agradecería hacer llegar una copia...

Deame3p

Espero te sirva de algo
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #10 (permalink)  
Antiguo 23/08/2011, 13:40
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
PHPExcel

hola soy nuevo ocupando PHPExcel

y tengo un problmea


aun estoy probando el sistema de manera local aun no esta en un servidor

cuando probe PHPExcel coloque un archivo de excel dentro d mi carpeta en dond esta todo el proyecto

pero cuando qise leer un archivo de excel que se encuentra en otra ubicacion no se puede me proboca un error espero me ayuden

GRACIAS !!!



<?php



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

$archivo=$_POST["archivo"];


$objReader = new PHPExcel_Reader_Excel2007();

$ruta="c:\\nombres.xlsx";


$objPHPExcel = $objReader->load($ruta);


$objPHPExcel->setActiveSheetIndex(0);



$i=1;

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

echo $nombre."<br>".$email."<br>".$telefono;

$i++;
}

?>
  #11 (permalink)  
Antiguo 23/08/2011, 20:04
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: PHPExcel

Y que error te provoca....
Haber si da alguna pista de lo que este pasando...

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #12 (permalink)  
Antiguo 24/08/2011, 10:29
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: PHPExcel

Cita:
Iniciado por portalmana Ver Mensaje
Y que error te provoca....
Haber si da alguna pista de lo que este pasando...

Saludos

la momento de escribir la ruta del archivo que qiero leer eso me provoca el error
  #13 (permalink)  
Antiguo 24/08/2011, 10:57
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: PHPExcel

Si pues es muy probable que no este accediendo a el, por lo cual deberías implementar un cargador de archivos o dejarlo bajo tu directorio de proyecto.
No puedes acceder a un directorio que está fuera de tu home. Es una restricción del servidor web.

Pero el error me refiero al warning o fatal error que te este dando...

Lo que puedes hacer si tienes acceso al php.ini condigurar el open_basedir con " C:\ " y las rutinas podran acceder de cualquier lado, aunque es un riesgo de seguridad grande.

Saludos

Manual PHP
open_basedir string

Límite de ficheros que pueden ser abiertos por PHP en el especificado árbol del directorio, incluyendo el fichero así mismo. Esta directiva NO es afectada cuando Safe Mode está On o Off.

Cuando un script intenta abrir un fichero, con por ejemplo, fopen() o gzopen(), se comprueba la localización del fichero. Si el fichero está fuera del directorio especificado, PHP se negará abrirlo. Todos los enlaces simbólicos son resueltos, entonces no es posible omitir esta restricción usando enlaces simbólicos. Si el fichero no existe el enlace simbólico no podrá ser resuelto y el nombre del fichero es comparado o resuelto a open_basedir .

El valor especial . indica que el directorio de trabajo del script será usado como directorio base. Esto es, sin embargo, un poco peligroso ya que el directorio del script puede ser fácilmente cambiado con la función chdir().

En httpd.conf, open_basedir se puede desactivar (ej. para algunos virtual hosts) de la misma manera que cualquier otra directiva de configuración con "php_admin_value open_basedir none".

Bajo Windows, separe los directorios con punto y coma. En cualquier otro sistema, separe los directorios con dos puntos. Como en el módulo Apache, las rutas de los directorios principales de open_basedir heredan automáticamente.

La restricción especificada en open_basedir es un nombre de directorio desde PHP 5.2.16 y 5.3.4. Las versiones anteriores lo usaron como un prefijo. Esto quiere decir que "open_basedir = /dir/incl" también tiene acceso a "/dir/include" y "/dir/incls si es que existen. Cuando quiera restringir el acceso solamente a un directorio específico, finalícelo con una barra. Por ejemplo: open_basedir = /dir/incl/

Por defecto permite a abrir cualquier tipo de ficheros.

Note:

A partir de PHP 5.3.0 open_basedir puede ser usado en tiempo de ejecucción. Esto significa que si open_basedir está establecido como /www/ en php.ini un script puede cambiar la configuración en tiempo de ejecucción a /www/tmp/ con ini_set()
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Última edición por portalmana; 24/08/2011 a las 11:03

Etiquetas: phpexcel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:01.