Пример #1
0
 function vista_excel(toba_vista_excel $salida)
 {
     $excel = $salida->get_excel();
     $excel->setActiveSheetIndex(0);
     $excel->getActiveSheet()->setTitle('Principal');
     $salida->titulo('Filtro', 3);
     $this->dependencia('filtro')->vista_excel($salida);
     $salida->separacion(2);
     $salida->titulo('Multilínea', 3);
     $this->dependencia('ml')->vista_excel($salida);
     $salida->separacion(2);
     $this->dependencia('cuadro')->vista_excel($salida);
     $salida->separacion(2);
     $salida->titulo('Formulario', 2);
     $this->dependencia('formulario')->vista_excel($salida);
     $salida->crear_hoja('Copia');
     $excel->setActiveSheetIndex(1);
     $salida->titulo('Copia del filtro en hoja 2', 3);
     $this->dependencia('filtro')->vista_excel($salida);
     $salida->separacion(2);
     $salida->titulo('Multilínea', 3);
     $this->dependencia('ml')->vista_excel($salida);
     $salida->separacion(2);
     $this->dependencia('cuadro')->vista_excel($salida);
     $salida->separacion(2);
     $salida->titulo('Formulario', 2);
     $this->dependencia('formulario')->vista_excel($salida);
 }
Пример #2
0
 function vista_excel(toba_vista_excel $salida)
 {
     $this->_carga_opciones_ef->cargar();
     $formateo = new $this->_clase_formateo('excel');
     $datos = array();
     foreach ($this->_lista_ef_post as $ef) {
         $opciones = array();
         $etiqueta = $this->_elemento_formulario[$ef]->get_etiqueta();
         //Hay que formatear?
         $estilo = array();
         if (isset($this->_info_formulario_ef[$ef]["formateo"])) {
             $funcion = "formato_" . $this->_info_formulario_ef[$ef]["formateo"];
             $valor_real = $this->_elemento_formulario[$ef]->get_estado();
             list($valor, $estilo) = $formateo->{$funcion}($valor_real);
         } else {
             list($valor, $estilo) = $this->_elemento_formulario[$ef]->get_descripcion_estado('excel');
         }
         if (isset($estilo)) {
             $opciones['valor']['estilo'] = $estilo;
         }
         $opciones['etiqueta']['estilo']['font']['bold'] = true;
         $opciones['etiqueta']['ancho'] = 'auto';
         $opciones['valor']['ancho'] = 'auto';
         $datos = array(array('etiqueta' => $etiqueta, 'valor' => $valor));
         $salida->tabla($datos, array(), $opciones);
     }
 }
Пример #3
0
 /**
  * @ignore
  * @param toba_vista_excel $salida
  */
 function vista_excel(toba_vista_excel $salida)
 {
     //$this->salida = $salida;
     $titulo = $this->get_titulo();
     $cant_columnas = count($this->_columnas);
     if ($titulo != '') {
         $salida->set_hoja_nombre($titulo);
         $salida->titulo($titulo, $cant_columnas);
     }
     if ($this->_info_cuadro["subtitulo"] != '') {
         $salida->titulo($this->_info_cuadro["subtitulo"], $cant_columnas);
     }
     $this->generar_salida("excel", $salida);
 }
Пример #4
0
 function vista_excel(toba_vista_excel $salida)
 {
     $salida->set_nombre_archivo($this->s__sigla . ".xls");
     $this->s__datos_filtro['sigla']['valor'] = $this->s__sigla;
     $excel = $salida->get_excel();
     $cabecera = false;
     //para determinar si escribir los nombre de campo en la fila 1
     $fila = 2;
     $columna = 65;
     //caracter A
     //chr(66) devuelve letra de ascii
     $datos = $this->dep('datos')->tabla('plan_estudio')->listar_planes($this->s__datos_filtro);
     //print_r($datos[1]);
     foreach ($datos as $key => $valor) {
         //Itera sobre los planes
         $salida->set_hoja_nombre('Planes');
         foreach ($valor as $campo => $dato) {
             //Itera sobre los campos de un plan
             if (!$cabecera) {
                 //aun no se escribieron los nombres de campos
                 $celda = chr($columna) . '1';
                 $excel->setActiveSheetIndex(0)->setCellValue($celda, mb_convert_encoding($campo, "UTF8"));
                 //con utf8_decode no se visualiza bien
             }
             $celda = chr($columna) . $fila;
             if (strcasecmp($campo, 'nivel') == 0) {
                 switch ($dato) {
                     case 0:
                         //grado
                         $excel->setActiveSheetIndex(0)->setCellValue($celda, "Grado");
                         break;
                     case 1:
                         //posgrado
                         $excel->setActiveSheetIndex(0)->setCellValue($celda, "Posgrado");
                         break;
                     case -1:
                         //pregrado
                         $excel->setActiveSheetIndex(0)->setCellValue($celda, "Pregrado");
                         break;
                     case 2:
                         //ciclo de licenciatura
                         $excel->setActiveSheetIndex(0)->setCellValue($celda, "Ciclo de Licenciatura");
                         break;
                 }
             } else {
                 //demas campos
                 $excel->setActiveSheetIndex(0)->setCellValue($celda, mb_convert_encoding($dato, "UTF8"));
             }
             //con utf8_decode no se visualiza bien
             $columna++;
         }
         $fila++;
         $columna = 65;
         $cabecera = true;
     }
     //Los vuelvo a obtener porque en la otra consulta traia las sedes entonces repetia registros para distintas sedes
     $datos = $this->dep('datos')->tabla('plan_estudio')->get_ids($this->s__datos_filtro);
     $hoja = 1;
     $cabecera = false;
     foreach ($datos as $key => $valor) {
         //Itera sobre los planes
         $nombre_hoja = is_null($valor['iniciales_siu']) ? "Plan" : $valor['iniciales_siu'];
         $salida->crear_hoja($nombre_hoja);
         $fila = 2;
         //Coloca el nombre de la carrera en fila 1
         $excel->setActiveSheetIndex($hoja)->setCellValue("A1", mb_convert_encoding($valor['nombre'], "UTF8"));
         //con utf8_decode no se visualiza bien
         //Coloca la/s descripcion/es del plan
         $filtro['id_plan']['valor'] = $valor['id_plan'];
         $descr = $this->dep('datos')->tabla('seccion')->get_listado($filtro);
         foreach ($descr as $key => $una_descripcion) {
             $celda = 'A' . $fila;
             $excel->setActiveSheetIndex($hoja)->setCellValue($celda, mb_convert_encoding($una_descripcion['titulo'], "UTF8"));
             //con utf8_decode no se visualiza bien
             $celda = 'B' . $fila;
             $excel->setActiveSheetIndex($hoja)->setCellValue($celda, mb_convert_encoding($una_descripcion['contenido'], "UTF8"));
             //con utf8_decode no se visualiza bien
             $fila++;
         }
         $fila += 2;
         //Separación extra entre descripciones y materias
         //Coloca las materias del plan, una por fila
         $datos = $this->dep('datos')->tabla('materia')->listar_materias($valor['id_plan']);
         foreach ($datos as $key => $valor) {
             //Itera sobre las materias
             foreach ($valor as $campo => $dato) {
                 //Itera sobre los campos de una materia
                 if (!$cabecera) {
                     //aun no se escribieron los nombres de campos
                     $celda = chr($columna) . ($fila - 1);
                     $excel->setActiveSheetIndex($hoja)->setCellValue($celda, mb_convert_encoding($campo, "UTF8"));
                     //con utf8_decode no se visualiza bien
                 }
                 $celda = chr($columna) . $fila;
                 $excel->setActiveSheetIndex($hoja)->setCellValue($celda, mb_convert_encoding($dato, "UTF8"));
                 //con utf8_decode no se visualiza bien
                 $columna++;
             }
             $fila++;
             $columna = 65;
             $cabecera = true;
         }
         $fila++;
         //Coloca la observación del plan
         $obs = $this->dep('datos')->tabla('obs_plan')->get_listado($filtro);
         if (count($obs) > 0) {
             $excel->setActiveSheetIndex($hoja)->setCellValue("A{$fila}", "Observaciones:");
             $excel->setActiveSheetIndex($hoja)->setCellValue("B{$fila}", mb_convert_encoding($obs[0]['descripcion'], "UTF8"));
         }
         $cabecera = false;
         $hoja++;
     }
 }
 function vista_excel(toba_vista_excel $salida)
 {
     $salida->set_nombre_archivo("Resultados_Encuesta.xls");
     $excel = $salida->get_excel();
     //recuperamos el objeto
     $salida->titulo("Resultados de la Encuesta");
     $sql = "select titulo,estado from encuesta where id_encuesta=" . $this->s__encuesta;
     $res = toba::db('encuesta')->consultar($sql);
     $tit = utf8_decode($res[0]['titulo']);
     $estado = $res[0]['titulo'];
     if ($estado == 'A') {
         $tit = $tit . '-' . 'Resultados Parciales';
     } else {
         $tit = $tit . '-' . 'Resultados Finales';
     }
     $salida->set_hoja_nombre("Hoja 1");
     $excel->setActiveSheetIndex(0)->setCellValue('A1', $tit);
     //recorro las secciones
     $sql = "select t_s.* from seccion t_s where t_s.id_enc=" . $this->s__encuesta . " order by t_s.id_seccion";
     $res = toba::db('encuesta')->consultar($sql);
     $seccion_nro = 1;
     $fila = 2;
     foreach ($res as $sec) {
         $s = $sec['id_seccion'];
         $consulta = "select count(t_c.id_opcion) as cant from pregunta t_p JOIN seccion t_s ON (t_p.id_sec=t_s.id_seccion)   RIGHT OUTER JOIN opcion_comun t_c ON (t_p.id_pregunta=t_c.id_preg) where t_s.id_seccion=" . $s;
         $resultado = toba::db('encuesta')->consultar($consulta);
         if ($resultado[0]['cant'] != 0) {
             //solo muestro las secciones que tienen al menos una pregunta con opciones comunes
             $dato = $seccion_nro . '. ' . utf8_decode($sec['titulo']);
             //inserto el titulo de la seccion
             $excel->setActiveSheetIndex(0)->setCellValue('A' . $fila, $dato);
             $fila = $fila + 1;
             //recupero los datos de las preguntas de la seccion
             $sql2 = "select t_p.* from pregunta t_p where t_p.id_sec=" . $s . " order by t_p.id_pregunta";
             $datos_preguntas = toba::db('encuesta')->consultar($sql2);
             $preg_nro = 1;
             foreach ($datos_preguntas as $pregunta) {
                 $p = $pregunta['id_pregunta'];
                 $estilo = $pregunta['estilo'];
                 $dato = $preg_nro . '. ' . utf8_decode($pregunta['descripcion']);
                 if ($estilo == 'VR' or $estilo == '1R') {
                     $excel->setActiveSheetIndex(0)->setCellValue('A' . $fila, $dato);
                     $fila = $fila + 1;
                     $preg_nro = $preg_nro + 1;
                     //recupero los datos de las opciones comunes de la pregunta
                     $sql4 = "select t_o.* from opcion_comun t_o where t_o.id_preg=" . $p . " order by t_o.id_opcion";
                     $datos_opciones = toba::db('encuesta')->consultar($sql4);
                     foreach ($datos_opciones as $opcion) {
                         $dato1 = utf8_decode($opcion['nombre']);
                         $dato2 = $opcion['cantidad_respuestas'];
                         //inserto el nombre de la opcion
                         $excel->setActiveSheetIndex(0)->setCellValue('A' . $fila, $dato1);
                         //inserto la cantidad de respuestas de la opcion
                         $excel->setActiveSheetIndex(0)->setCellValue('B' . $fila, $dato2);
                         $fila = $fila + 1;
                     }
                 }
             }
             $seccion_nro = $seccion_nro + 1;
         }
         //fin del if
     }
     //for de las secciones
     //agrego una nueva hoja al excel
     $salida->crear_hoja('Hoja 2');
     $salida->set_hoja_nombre("Hoja 2");
     //inicializo nuevamente para comenzar desde la fila 1
     $seccion_nro = 1;
     $fila = 1;
     //recorro de nuevo todas las secciones
     foreach ($res as $sec) {
         $s = $sec['id_seccion'];
         $consulta = "select count(t_l.id_opcion) as cant from pregunta t_p JOIN seccion t_s ON (t_p.id_sec=t_s.id_seccion)   RIGHT OUTER JOIN opcion_libre t_l ON (t_p.id_pregunta=t_l.id_preg) where t_s.id_seccion=" . $s;
         $resultado = toba::db('encuesta')->consultar($consulta);
         if ($resultado[0]['cant'] != 0) {
             //solo muestro las secciones que tienen al menos una pregunta con opciones libres. Si la seccion no tiene preguntas libres entonces no muestro nada
             $dato = $seccion_nro . '. ' . utf8_decode($sec['titulo']);
             //inserto el titulo de la seccion
             $excel->setActiveSheetIndex(1)->setCellValue('A' . $fila, $dato);
             $fila = $fila + 1;
             //recupero los datos de las preguntas que tienen opciones libre de la seccion
             $sql2 = "select distinct t_p.* from pregunta t_p, opcion_libre t_l where t_p.id_sec=" . $s . " and t_p.id_pregunta=t_l.id_preg order by t_p.id_pregunta";
             $datos_preguntas = toba::db('encuesta')->consultar($sql2);
             $preg_nro = 1;
             foreach ($datos_preguntas as $pregunta) {
                 $p = $pregunta['id_pregunta'];
                 $estilo = $pregunta['estilo'];
                 $dato = $preg_nro . '. ' . utf8_decode($pregunta['descripcion']);
                 //inserto el nombre de la pregunta
                 $excel->setActiveSheetIndex(1)->setCellValue('A' . $fila, $dato);
                 $preg_nro = $preg_nro + 1;
                 //recupero los datos de las opciones libres de la pregunta
                 $sql4 = "select t_l.* from opcion_libre t_l where t_l.id_preg=" . $p . " order by t_l.id_opcion";
                 $datos_opciones = toba::db('encuesta')->consultar($sql4);
                 foreach ($datos_opciones as $opcion) {
                     $dato2 = utf8_decode($opcion['observacion']);
                     //inserto la respuesta de la pregunta
                     $excel->setActiveSheetIndex(1)->setCellValue('B' . $fila, $dato2);
                     $fila = $fila + 1;
                 }
             }
             $seccion_nro = $seccion_nro + 1;
         }
         //fin del if
     }
     //for de las secciones
 }
Пример #6
0
 function vista_excel(toba_vista_excel $salida)
 {
     $this->totalizar_columnas_impresion();
     $formateo = new $this->_clase_formateo('excel');
     $opciones = array();
     $datos = array();
     if (isset($this->_ordenes)) {
         //--Titulos
         $titulos = array();
         foreach ($this->_lista_ef_post as $ef) {
             $titulos[$ef] = $this->ef($ef)->get_etiqueta();
         }
         //--Datos
         foreach ($this->_ordenes as $fila) {
             $dato = $this->_datos[$fila];
             $this->cargar_registro_a_ef($fila, $dato);
             $this->_carga_opciones_ef->cargar();
             $datos_temp = array();
             foreach ($this->_lista_ef_post as $ef) {
                 $this->_elemento_formulario[$ef]->ir_a_fila($fila);
                 if (isset($this->_info_formulario_ef[$ef]["formateo"])) {
                     $funcion = "formato_" . $this->_info_formulario_ef[$ef]["formateo"];
                     $valor_real = $this->_elemento_formulario[$ef]->get_estado();
                     list($valor, $estilo) = $formateo->{$funcion}($valor_real);
                 } else {
                     list($valor, $estilo) = $this->_elemento_formulario[$ef]->get_descripcion_estado('excel');
                 }
                 if (isset($estilo)) {
                     $opciones[$ef]['estilo'] = $estilo;
                 }
                 $opciones[$ef]['ancho'] = 'auto';
                 $datos_temp[$ef] = $valor;
             }
             $datos[] = $datos_temp;
         }
         $salida->tabla($datos, $titulos, $opciones);
     }
 }
Пример #7
0
 function vista_excel(toba_vista_excel $salida)
 {
     $this->_carga_opciones_ef->cargar();
     $formateo = new $this->_clase_formateo('excel');
     $datos = array();
     foreach ($this->_columnas as $columna) {
         if (!$columna->es_visible()) {
             continue;
         }
         if ($columna->get_ef()->tiene_estado()) {
             $opciones = array();
             $etiqueta = $columna->get_ef()->get_etiqueta();
             //Hay que formatear?
             $estilo = array();
             $fn_formateo = $columna->get_formateo();
             if (!is_null($fn_formateo)) {
                 $funcion = "formato_" . $fn_formateo;
                 $valor_real = $columna->get_ef()->get_estado();
                 list($valor, $estilo) = $formateo->{$funcion}($valor_real);
             } else {
                 list($valor, $estilo) = $columna->get_ef()->get_descripcion_estado('excel');
             }
             $condicion = $columna->condicion()->get_etiqueta();
             if (isset($estilo)) {
                 $opciones['valor']['estilo'] = $estilo;
             }
             $opciones['etiqueta']['estilo']['font']['bold'] = true;
             $opciones['etiqueta']['ancho'] = 'auto';
             $opciones['condicion']['ancho'] = 'auto';
             $opciones['valor']['ancho'] = 'auto';
             $datos = array(array('etiqueta' => $etiqueta, 'condicion' => $condicion, 'valor' => $valor));
             $salida->tabla($datos, array(), $opciones);
         }
     }
 }
Пример #8
0
 protected function servicio__vista_excel($objetos)
 {
     $salida = new toba_vista_excel();
     $salida->asignar_objetos($objetos);
     $salida->generar_salida();
     $salida->enviar_archivo();
 }