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); }
/** * @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); }
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 }