Importar EXCEL en PHP
parentesys

Importar EXCEL en PHP

Aquí tenemos la manera de leer archivos formato Excel con PHP. El código de este artículo está probado y optimizado.

15 jul 2009


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

Invítame a un café si te ha gustado este artículo
2,20 EUR

Temas relacionados:

Opiniones de este contenido

Esta web se reserva el derecho de suprimir, por cualquier razón y sin previo aviso, cualquier contenido generado en los espacios de participación en caso de que los mensajes incluyan insultos, mensajes racistas, sexistas... Tampoco se permitirán los ataques personales ni los comentarios que insistan en boicotear la labor informativa de la web, ni todos aquellos mensajes no relacionados con la noticia que se esté comentando. De no respetarse estas mínimas normas de participación este medio se verá obligado a prescindir de este foro, lamentándolo sinceramente por todos cuantos intervienen y hacen en todo momento un uso absolutamente cívico y respetuoso de la libertad de expresión.


#12

Problema con PHPExcel

Ruben el 1 sep 2014
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.....
#11

Agradecimiento

rollanime el 14 jul 2012
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
#10

gracias por el dato

bien el 15 dic 2011
pense que era por el lado de PEAR pero era solo ajustar la linea que indicas. gracias!!
#9

Ayuda

POPEYE el 17 nov 2011
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.
#8

Yo tengo un problema con los acentos

V el 23 mar 2011

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.

#7

Buen Aporte

Jimmy Toledano el 13 feb 2011
Gracias por el aporte, lo voy a probrar
#6

Excelente

Henry Vallenilla el 24 oct 2010
Brother, excelente aporte, me sirvio de gran ayuda.
#5

Blog de peces

Jesus | Blog de peces el 22 oct 2010
Gracias.
#4

Eng

Ren el 18 may 2010
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.
#3

Problema

Reinier Ernesto el 12 dic 2009
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.
#2

Fatal error: allowed memory size

admin el 12 nov 2009
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.
#1

pregunta

Krathos el 6 nov 2009
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!


Tu opinión

Contenidos Indexados
El Arte del Bonsái Ficus - Variedades

 3
  
 236200

English Adverbios de Frecuencia

 10
  
 219425

Informática Generador de códigos de barras en PHP

 13
  
 181731

Quejas denuncias estafas Descubre quién te visita en Facebook?

 16
  
 157111

English Something - Anything

 2
  
 148139

Marketing digital Cómo ganar dinero con un periódico o revista digital

 2
  
 146029

Informática Mejores herramientas para Eventos Virtuales

 1
  
 116177

Actualidad Las profesiones que van a desaparecer.

 0
  
 103031

Informática Periodista digital, ¿cuánto vale tu tiempo?

 0
  
 102302

Autores

Admin

Este autor tiene 31 artículos publicados.

PARENTESYS

Este autor tiene 18 artículos publicados.

MILES

Este autor tiene 3 artículos publicados.


Newsletter

Suscríbete a nuestros boletines