Ir al contenido principal

PHP Script para leer un hoja Excel

En esta oportunidad quiero responder a una pregunta formulada, ¿si es posible leer una hoja de excel desde PHP?.
En una oportunidad me pidieron que migrara datos de una hoja de Excel hacia Oracle.

La mayoria hubiera optado por usar funciones de Excel como "contatenar" para generar los Insert  los cuales posteriormente podriamos ejecutarlos desde la ventana de consultas; pero esta es una solución sencilla para todo aquel que conoce algo de PHP y VBA Haciendo uso de Objetos COM.

recuerde que por tratarse que Excel y Objetos COM esto solo corre sobre Windows, aqui les dejo el script.
<?php 
function getcadenasql($hoja, $maximoFil, $maximoCol, $nombreTabla) { 
  $hoja->activate; 
  $cadena = "INSERT INTO ". $nombreTabla ." ("; 
  $col = 1; 
  while ($col <= $maximoCol) { 
    $cadena .= "'".utf8_encode ($hoja->Cells(1, $col))."', ";    
    $col++; 
  } 
  $cadena .= "[FIN1]"; 
  $cadena = str_replace (", [FIN1]", ") VALUES", $cadena);   
  $fil = 2; 
  while ($fil <= $maximoFil) { 
    $cadena .= "<B>\n (";             
    $col = 1; 
    while ($col <= $maximoCol) { 
      $cadena .= "'".utf8_encode ($hoja->Cells($fil, $col))."', "; 
      $col++; 
    } 
    $cadena .= "[FIN2]"; 
    $cadena = str_replace (", [FIN2]", "), ", $cadena);     
    $fil++; 
  } 
  $cadena .= "[FIN3]"; 
  $cadena = str_replace (", [FIN3]", ";", $cadena); 
  echo $cadena ; 
} 
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>php and ExCel </title>
<style> 
body{font-family: Lucida Grande, Lucida Sans Unicode, sans-serif;font-size: 12px;color: #444;}
</style>
</head>
<body>
<?php
$myexcel = new COM ("Excel.sheet"); 
$myexcel->Application->DisplayAlerts = false; 
$abrir = $myexcel->application->Workbooks->Open("c:\UNIV-UPA.xls"); 
$myexcel->Application->Visible = 0; 
$hoja = $abrir->Worksheets("Alumnos"); 

$numeroFil = $myexcel->application->ActiveSheet->UsedRange->Rows->Count; 
$numeroCol = $myexcel->application->ActiveSheet->UsedRange->Columns->Count; 

getcadenasql($hoja, $numeroFil, $numeroCol, 'tbalumnos');
$myexcel->application->Workbooks->close();
?> 
</body>
</html>
Observemos la estructura de la Hoja Excel, no olvide fijarse en el nombre de la hoja.



Estos son los resultados, espero que les sirva uno no sabe cuando vendra un loco a pedirnos locuras.


Comentarios

Entradas más populares de este blog

FreeTDS para el acceso a MsSQL desde PHP en Linux CentOS 5

Tema Anterior: http://superahacker.blogspot.com/2009/04/instalacion-de-unixodbc-para-la.html En esta ocasion la situación es como conectar con PHP 5 desde un Servidor Linux a una base de Datos Ms Sql Server en Servidor Windows.

UnixODBC para la conexion MsSql con PHP en Linux Centos 5

Esta fue una de esas ideas locas de probar conexiones a MS SQL SERVER con PHP desde mi servidor web Linux mediante UnixODBC a un Servidor Windows.

Hosting Gratuito con soporte PHP y MySql en Miarroba

Es siempre necesario contar a veces con un servidor web con soporte en PHP y MySql con el que podamos contar a la hora de hacer nuestras pruebas fuera de un localhost o que un cliente al cual le estamos desarrollando una aplicación web lo pueda ver desde la comodidad de su oficina.