Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte Trabajar con archivos excel desde php
#1
Saludos.

En este post vamos a trabajar con un archivo excel desde php. Para este ejemplo vamos a trabajar con uno con dos columnas y 24 filas, Una de las columnas son horas (de 1 a 24) y en cada hora un precio, Si lo queréis bajar AQUI.

También necesitaremos un archivo para leer el archivo excel , se trata de excel_reader2.php, merito a su autor, te lo puedes bajar de AQUI.

Bien, manos a la obra, en primer lugar tendremos que cargar excel_reader2.php y el propio archivo excel, por lo que al principio de la página pondremos:

Código PHP: (Seleccionar todo)
<?php
require_once 'excel_reader2.php';
$data = new Spreadsheet_Excel_Reader("excel.xls");
?>

Ahora vamos a crear un array con los valores de las filas y columnas con las que queremos trabajar, pondremos:

Código PHP: (Seleccionar todo)
$pepe[1] = $data->raw(12);
$pepe[2] = $data->raw(22);
$pepe[3] = $data->raw(32);
$pepe[4] = $data->raw(42);
$pepe[5] = $data->raw(52);
$pepe[6] = $data->raw(62);
$pepe[7] = $data->raw(72);
$pepe[8] = $data->raw(82);
$pepe[9] = $data->raw(92);
$pepe[10] = $data->raw(102);
$pepe[11] = $data->raw(112);
$pepe[12] = $data->raw(122);
$pepe[13] = $data->raw(132);
$pepe[14] = $data->raw(142);
$pepe[15] = $data->raw(152);
$pepe[16] = $data->raw(162);
$pepe[17] = $data->raw(172);
$pepe[18] = $data->raw(182);
$pepe[19] = $data->raw(192);
$pepe[20] = $data->raw(202);
$pepe[21] = $data->raw(212);
$pepe[22] = $data->raw(222);
$pepe[23] = $data->raw(232);
$pepe[24] = $data->raw(242); 

Con esto tendremos un array con las 24 horas y el precio de cada una de ellas.
Vamos a ver el array, escribimos:

Código PHP: (Seleccionar todo)
print_r($pepe); 

y obtendremos:

Array ( [1] => 121,13838673 [2] => 119,52911591 [3] => 116,56370045 [4] => 113,88535263 [5] => 113,5654684 [6] => 114,06312135 [7] => 116,70671779 [8] => 117,69285692 [9] => 115,08610616 [10] => 114,66693383 [11] => 113,06913537 [12] => 110,99255973 [13] => 110,92340009 [14] => 111,20173737 [15] => 110,60698288 [16] => 110,49370675 [17] => 108,41762924 [18] => 108,57877114 [19] => 110,6906715 [20] => 112,97520268 [21] => 119,26980347 [22] => 121,53522841 [23] => 119,32600748 [24] => 117,68262512 )

Otra manera de ver los valores del array:

Código PHP: (Seleccionar todo)
var_dump($pepe); 

Y obtendremos:

array(24) { [1]=> float(121,13838673) [2]=> float(119,52911591) [3]=> float(116,56370045) [4]=> float(113,88535263) [5]=> float(113,5654684) [6]=> float(114,06312135) [7]=> float(116,70671779) [8]=> float(117,69285692) [9]=> float(115,08610616) [10]=> float(114,66693383) [11]=> float(113,06913537) [12]=> float(110,99255973) [13]=> float(110,92340009) [14]=> float(111,20173737) [15]=> float(110,60698288) [16]=> float(110,49370675) [17]=> float(108,41762924) [18]=> float(108,57877114) [19]=> float(110,6906715) [20]=> float(112,97520268) [21]=> float(119,26980347) [22]=> float(121,53522841) [23]=> float(119,32600748) [24]=> float(117,68262512) }

Ahora vamos a mostrar los valores ordenados de menor a mayor precio:

Código PHP: (Seleccionar todo)
asort($pepe);
var_export($pepe); 

Obtenermos:

array ( 17 => 108.41762924, 18 => 108.57877114, 16 => 110.49370675, 15 => 110.60698288, 19 => 110.69067149999999, 13 => 110.92340009, 12 => 110.99255973, 14 => 111.20173737, 20 => 112.97520268, 11 => 113.06913537, 5 => 113.5654684, 4 => 113.88535263, 6 => 114.06312135, 10 => 114.66693383, 9 => 115.08610616, 3 => 116.56370045, 7 => 116.70671779, 24 => 117.68262512, 8 => 117.69285692, 21 => 119.26980347, 23 => 119.32600748, 2 => 119.52911591, 1 => 121.13838672999999, 22 => 121.53522841, )

Vamos a Mostrar el precio mas bajo:

Código PHP: (Seleccionar todo)
echo min($pepe); 

Obtenemos:

108,41762924

Vamos a mostrar la hora en la que está el precio mas bajo:

Código PHP: (Seleccionar todo)
$min_keys = array(); 
foreach(
$pepe as $pepo => $pepi
 
   if($pepi == min($pepe)) array_push($min_keys$pepo); 

echo 
$min_keys[0]; 

y obtenemos:

17

En esta ocasión vamos a mostrar los precios de menor a mayor:

Código PHP: (Seleccionar todo)
foreach($pepe as $pepito){
 
   echo $pepito."<br>";


Con lo que obtendremos:

108,41762924
108,57877114
110,49370675
110,60698288
110,6906715
110,92340009
110,99255973
111,20173737
112,97520268
113,06913537
113,5654684
113,88535263
114,06312135
114,66693383
115,08610616
116,56370045
116,70671779
117,68262512
117,69285692
119,26980347
119,32600748
119,52911591
121,13838673
121,53522841

Vamos a mostrar los horarios de menor a mayor precio:

Código PHP: (Seleccionar todo)
$juan array_keys($pepe);
foreach(
$juan as $juanito){
 
   echo $juanito."<br>";


Y obtendremos:

17
18
16
15
19
13
12
14
20
11
5
4
6
10
9
3
7
24
8
21
23
2
1
22

Vamos a mostrar los horarios con el precio ordenados de menor a mayo:

Código PHP: (Seleccionar todo)
foreach ($pepe as $hora => $precio) {
 
   echo " A las $hora horas el precio será $precio.\n";
 
   echo "</p>";


Obtenemos:

A las 17 horas el precio será 108,41762924.
A las 18 horas el precio será 108,57877114.
A las 16 horas el precio será 110,49370675.
A las 15 horas el precio será 110,60698288.
A las 19 horas el precio será 110,6906715.
A las 13 horas el precio será 110,92340009.
A las 12 horas el precio será 110,99255973.
A las 14 horas el precio será 111,20173737.
A las 20 horas el precio será 112,97520268.
A las 11 horas el precio será 113,06913537.
A las 5 horas el precio será 113,5654684.
A las 4 horas el precio será 113,88535263.
A las 6 horas el precio será 114,06312135.
A las 10 horas el precio será 114,66693383.
A las 9 horas el precio será 115,08610616.
A las 3 horas el precio será 116,56370045.
A las 7 horas el precio será 116,70671779.
A las 24 horas el precio será 117,68262512.
A las 8 horas el precio será 117,69285692.
A las 21 horas el precio será 119,26980347.
A las 23 horas el precio será 119,32600748.
A las 2 horas el precio será 119,52911591.
A las 1 horas el precio será 121,13838673.
A las 22 horas el precio será 121,53522841.

Ahora vamos a mostrar el precio mas bajos que yo quiero, en esta ocasión el precio mas bajo y el cuarto mas bajo:

Código PHP: (Seleccionar todo)
echo $juan[0]."<br>";
echo 
$juan[3]; 

La salida será:

17
15

Vamos a calcular el valor medio del precio:

Código PHP: (Seleccionar todo)
$promedio=array_sum($pepe)/count($pepe); 
echo 
"El valor medio de hoy es: $promedio €"

Nos mostrará:

El valor medio de hoy es: 114,52755089167 €

Vamos a mostrar el precio de la hora actual de nuestro sistema y lo compara con la media:

Código PHP: (Seleccionar todo)
$tiempo getdate(time());
$hora $tiempo["hours"];
$valor_hora_actual $pepe[$hora];
echo 
"la hora actual es $hora horas<br>";
echo 
"el valor medio del día de hoy es $promedio <br>";
echo 
"el precio de esta hora es $valor_hora_actual <br>";
if (
$valor_hora_actual >= $promedio)
{
    echo 
"Esta hora es mas cara que la media";
}
else
{
    echo 
"Esta hora es mas barata que la media";
    } 

Y obtenemos:

la hora actual es 20 horas
el valor medio del día de hoy es 114,52755089167
el precio de esta hora es 112,97520268
Esta hora es mas barata que la media


Bueno, ya está, espero que le sirva a alguien de ayuda.

Saludos.
[Imagen: chuck.gif]
Responder



Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)