]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/XLS.php
BugFix.
[mecon/meconlib.git] / lib / MECON / XLS.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Fri Oct 24 16:12:31 2003
22 Autor:  Gonzalo Merayo <gmeray@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id: PDF.php 428 2003-11-18 14:30:30Z mmarre $
25 -----------------------------------------------------------------------------*/
26
27 /**
28  * Liberia base para el manejo de xls's.  
29  */
30 class MECON_XLS {
31     /**
32       * _xls_data, mantiene el binario temporal del xls  
33       *
34       *
35       */
36     var $_xls_data;
37     /**
38       * _tabla, guarda una HTML_Tabla para obtener los datos 
39       *
40       *
41       */
42     var $_tabla;
43
44     /**
45      *  MECON_XLS Constructor,
46      *  @attrib tabla HTML_Tabla tabla de la que saca los datos
47      *  @return void
48      */
49     function MECON_XLS($tabla)
50     {
51       $this->_tabla=$tabla;
52     }
53
54     /**
55      *  Write Number
56      *  @attrib row numero de fila
57      *  @attrib col numero de columna
58      *  @attrib value valor a poner en la celda
59      *  @return void
60      */
61     function _WriteNumber($row,$col,$value)
62     {
63       $this->_xls_data .= pack("sssss",0x0203,14,$row,$col,0x00);
64       $this->_xls_data .= pack("d",$value);
65     }
66
67     /**
68      *  Write Text
69      *  @attrib row numero de fila
70      *  @attrib col numero de columna
71      *  @attrib value valor a poner en la celda
72      *  @return void
73      */
74     function _WriteText($row,$col,$value)
75     {
76       $len = strlen($value);
77       $this->_xls_data .= pack("s*",0x0204,8+$len,$row,$col,0x00,$len);
78       $this->_xls_data .= $value;
79     }
80
81     /**
82      *  Write Text
83      *  @attrib row numero de fila
84      *  @attrib col numero de columna
85      *  @attrib value valor a poner en la celda
86      *  @return void
87      */
88     function _Write($row,$col,$value)
89     {
90       $tipo = gettype($value);
91       if($tipo == "integer" || $tipo == "double" || $tipo == "float")
92         $this->_WriteNumber($row,$col,$value);
93       $this->_WriteText($row,$col,$value);
94     }
95
96
97     /**
98      * Funcion que genera el archivo y prepara los headers para que se envie.
99      *    
100      * @return void
101      * @access public
102      */
103     function display() 
104     {
105         header("Content-Disposition: filename=planilla.xls");
106         header("Content-Type: application/x-msexcel");
107         $tmp =& $this->toXLS();
108         header('Content-Length: ' . strlen($tmp));
109         echo $tmp;
110     }
111
112     /**
113      * Funcion que devuelve el XLS.
114      *
115      * @return string
116      * @access public
117      */
118     function toXLS() {
119         $this->_xls_data = pack("ssssss",0x809,0x08,0x00,0x10,0x0,0x0);
120         for($i = 0; $i< $this->_tabla->getRowCount(); $i++)
121           for($j = 0; $j< $this->_tabla->getColCount(); $j++)
122             $this->_Write($i, $j, $this->_tabla->getCellContents($i, $j));
123         $this->_xls_data .= pack("ss",0x0A,0x00);
124         return $this->_xls_data;
125     }
126 }
127 ?>