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

JSP y MySQL Conexion a Base de Datos

Tema anterior: http://superahacker.blogspot.com/2009/06/instalacion-netbeans-glassfish.html El modulo JSP con conexion a una base de datos MySQL, tiene las siguientes caracteristicas usar una clase Java llamada "Customers" que se encuentra en un package llamado "Mypackage" , para usar sus metodos y con ellos llevar acabo una consulta.

JSP y MsSQL Conexion a Base de Datos

Tema anterior: http://superahacker.blogspot.com/2009/09/jsp-y-mysql-conexion-base-de-datos.html El modulo JSP con conexion a una base de datos Ms SQL Server, tiene las siguientes caracteristicas usar una clase Java llamada "Customers" que se encuentra en un package llamado "Mypackage" , para usar sus metodos y con ellos llevar acabo una consulta.

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.