Vamos a ver como podemos leer archivos Excel programando en PHP.

Como podemos encontrar en php.net existe una función que nos permite leer archivos .csv desde PHP, esta función es fgetcsv()

Descripción

array fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure [, string $escape ]]]] )

similar a  fgets() , pero fgetcsv() parsea la línea que lee en formato CSV y devuelve un array que contiene los campos leídos.

 

La función fgetcsv no nos sirve para leer nuestros ficheros en Excel. Buscando por internet he encontrado una función que sí que lo hace, aunque con pequeños retoques, ya que lo que hay en internet no funciona.

 Se trata de la función PHP-ExcelReader, que podemos encontrar en ESTE ENLACE

Pero si descomprimes los ficheros oleread.inc  y reader.php   y te creas una página php para poder utilizarlos...

te da un error de esta forma...

Warning: require_once(Spreadsheet/Excel/Reader/OLERead.php) [function.require-once]: failed to open stream: No such file or directory in C:AppServwwwPracticaphpExcelReaderExcel eader.php on line 31

¿por qué? Fácil, porque el fichero OLERead.php no está en ninguna parte del código que hemos descomprimido. En la linea 31 del fichero reader.php  hay que poner require_once ´oleread.inc´;   

Después de salvado este escollo el error es otro, incomprensiblemente , ninguno de los ficheros excel que he probado funcionan. El código me dice que los ficheros no se pueden leer. Investigando en el código podemos ver que en el fichero oleread.inc    aparece...

 

      // check if file exist and is readable (Darko Miljanovic)
     if(!is_readable($sFileName)) {
      $this->error = 1;
      return false;
     }

 

Lo cual comprueba si el fichero se puede leer, con la funcion   is_readable(), la cual siempre retorna false (???)

He comentado esta parte del código  y   voila!!!   funciona

     // check if file exist and is readable (Darko Miljanovic)
     //if(!is_readable($sFileName)) {
     // $this->error = 1;
     // return false;
     //}

 

El código para leer un archivo excel es este...

  require_once ´phpExcelReader/reader.php´;   // ojo con la ruta de acceso del fichero reader.php
  $data = new Spreadsheet_Excel_Reader();
  $data->read($ruta_archivo);
  error_reporting(E_ALL ^ E_NOTICE);

  for ($i = 1; $i <= $data->sheets[0][´numRows´]; $i++) {
   for ($j = 1; $j <= $data->sheets[0][´numCols´]; $j++) {
    echo """.$data->sheets[0][´cells´][$i][$j]."",";
   }
   echo " ";
  }

IMPORTANTE: si copiais este código, debéis cambiar las comillas que aparecen en él, sustituyendo las que véis por las comillas simples (las de la tecla de interrogación, a la derecha del cero del teclado)

Que disfrutéis!!!

Autor: Oscar Hernández Caballero

 ARTICULOS RELACIONADOS:

http://www.parentesys.es/Escribir-archivos-Excel-con-PHP-32858

)( parentesys.es )( La cultura al alcance de todos )

Importar EXCEL en PHP
Fecha de publicación: 2009-07-15 03:07:27, por Oscar Hernández Caballero   (visto: 30432 veces)   (a 22 personas les ha parecido interesante)
Fuente:

Fotos de este contenido: si quieres añadir fotos, pulsa el botón Fotos

    
    


© parentesys.es - Todos los Derechos Reservados

Importar EXCEL en PHP

Comparte este contenido con todos tus amigos.



 Portada  :: Sección Informática

   Informática en Google  :: Buscador de Informática      Creación de páginas web de Informática

Opiniones sobre el artículo

Las opiniones que aquí se escriban deben hacer un uso cívico y respetuoso de la libertad de expresión. El administrador de parentesys.es se reserva el derecho de eliminar aquellos comentarios que no lo cumplan, o que no aporten información útil sobre el contenido arriba publicado.


Ruben
Problema con PHPExcel publicada el (01/09/2014 16:09:25)

Buenas, tengo un problema con PHPExcel, tengo un siot web que esta en linea en intranet, ingreso al mismo desde otra PC de la red y quiero recorrer los datos del archivo excel y almacenarlos pero me sale errores diferentes al seleccionar un archivo de xls o xlsx.. Por favor ayuda.....

rollanime
Agradecimiento publicada el (15/07/2012 03:07:56)

Excelente explicación había buscado la forma de hacerlo pero no encontraba. Aunque me tomo la primera parte la del CSV ya que me es más simple de esa forma para luego utilizarla en un Ciclo for(según lo que necesito) Muchas gracias nuevamente. Saludos

bien
gracias por el dato publicada el (15/12/2011 08:12:40)

pense que era por el lado de PEAR pero era solo ajustar la linea que indicas. gracias!!

POPEYE
Ayuda publicada el (18/11/2011 03:11:53)

como hago para que en vez de abrir el archivo que indique en la ruta, me abra el que seleccione a traves de un formulario al dar click en el boton leer archivo.

Víctor
Yo tengo un problema con los acentos publicada el (23/03/2011 10:03:39)

A mi me funcionaba correctamente pero en algunas celdas misteriosamente donde hay una tilde se corta y pasa a la celda siguiente.

Los mas extraño es que NO LO HACE CON TOTAS LAS TILDES.. solo con algunas.

En fin ojala encontremos algúna solución.

Un saludo.


Jimmy Toledano
Buen Aporte publicada el (13/02/2011 11:02:26)

Gracias por el aporte, lo voy a probrar

Henry Vallenilla
Excelente publicada el (24/10/2010 13:10:09)

Brother, excelente aporte, me sirvio de gran ayuda.

Jesus | Blog de peces
Blog de peces publicada el (23/10/2010 05:10:43)

Gracias.

René
Eng publicada el (19/05/2010 05:05:04)

Tengo el mismo problema a la hora de leer celdas que contienen fórmulas, y en ninguno de los foros que he visitado hay una respuesta sobre esta cuestión, es que sencillamente no tiene solución?, esto es un problema porque una de las ventajas de usar un fichero excel desde php, me parece que es la posibilidad de realizar cálculos en la hoja que luego sean mostrados en una página web. La librería es muy buena pero este es un gran escollo.

Reinier Ernesto
Problema publicada el (12/12/2009 12:12:05)

Hola, he visto que esta libreria no lee las celdas que contengan formulas. O sea las devuelve en blanco, sabes la solucion a esto. Ejemplo: La celda A1 tiene dentro =A3(no devuelve nada cuando obtengo la celda A1 y eso es lo que necesito) Gracias por tu ayuda.

admin
Fatal error: allowed memory size publicada el (12/11/2009 19:11:48)

Para solucionar este problema prueba con estas lineas de código al principio de tu página PHP

ini_set("memory_limit",500M);
set_time_limit(0);
Con esto le dices al Apache que reserve 500 megas de memoria y que el proceso no tenga tiempo de expiración. Saludos y espero haberte ayudado.

Krathos
pregunta publicada el (07/11/2009 03:11:37)

que onda! de todos los pasos ke eh visto para instalar esta cosa, tu explicacion es la mejor... pero aun me marca error - Fatal error: Allowed memory size... el cual buske y enkontre este http://www.educasitio.com/fatal-error dice ke modifique el archivo php.ini y ponga memory_limit = 32M y cuando lo pongo recargo la pagina y no pasa nada, nunca carga, se queda cargando y como a la media hora ya me dice que hay un problema en el apache... por que pasa eso? o como solucionarlo?? gracias!

Escribe tu comentario

Tu nombre: [obligatorio]

Título: [obligatorio]

Tu sitio web: (escríbelo con http://) [opcional]

Tu email: (lo mantendremos privado) [obligatorio]

Contenido: [obligatorio]

Código de seguridad anti-spam:*