------------------------------------------------------------------------------- $Id: PDF.php 428 2003-11-18 14:30:30Z mmarre $ -----------------------------------------------------------------------------*/ /** * Liberia base para el manejo de xls's. */ class MLIB_XLS { /** * _xls_data, mantiene el binario temporal del xls * * */ var $_xls_data; /** * _tabla, guarda una HTML_Tabla para obtener los datos * * */ var $_tabla; /** * MLIB_XLS Constructor, * @attrib tabla HTML_Tabla tabla de la que saca los datos * @return void */ function MLIB_XLS($tabla) { $this->_tabla=$tabla; } /** * Write Number * @attrib row numero de fila * @attrib col numero de columna * @attrib value valor a poner en la celda * @return void */ function _WriteNumber($row,$col,$value) { $this->_xls_data .= pack("sssss",0x0203,14,$row,$col,0x00); $this->_xls_data .= pack("d",$value); } /** * Write Text * @attrib row numero de fila * @attrib col numero de columna * @attrib value valor a poner en la celda * @return void */ function _WriteText($row,$col,$value) { $len = strlen($value); $this->_xls_data .= pack("s*",0x0204,8+$len,$row,$col,0x00,$len); $this->_xls_data .= $value; } /** * Write Text * @attrib row numero de fila * @attrib col numero de columna * @attrib value valor a poner en la celda * @return void */ function _Write($row,$col,$value) { $tipo = gettype($value); if($tipo == "integer" || $tipo == "double" || $tipo == "float") $this->_WriteNumber($row,$col,$value); $this->_WriteText($row,$col,$value); } /** * Funcion que genera el archivo y prepara los headers para que se envie. * * @return void * @access public */ function display() { header("Content-Disposition: filename=planilla.xls"); header("Content-Type: application/x-msexcel"); $tmp =& $this->toXLS(); header('Content-Length: ' . strlen($tmp)); echo $tmp; } /** * Funcion que devuelve el XLS. * * @return string * @access public */ function toXLS() { $this->_xls_data = pack("ssssss",0x809,0x08,0x00,0x10,0x0,0x0); for($i = 0; $i< $this->_tabla->getRowCount(); $i++) for($j = 0; $j< $this->_tabla->getColCount(); $j++) $this->_Write($i, $j, $this->_tabla->getCellContents($i, $j)); $this->_xls_data .= pack("ss",0x0A,0x00); return $this->_xls_data; } } ?>