Exportación a excel

Hola a todos, estoy sin poder resolver la siguiente cuestión:

Tengo un cuadro con la opción de exportar a excel seteada desde las propiedades básicas (se permite la exportación a excel plana y común). Según el servicio solicitado, es el manejador de salidas que utilizo, ya que tengo que formatear los datos a exportar, para esto utilizo este método

set_manejador_salida

Hasta ahí todo bien para ambas exportaciones (plana y común).

El problema se me presenta al momento de agregar un corte de control al cuadro e intentar hacer la exportación común, el excel se rompe, arrojando errores varios.

¿Qué tengo que hacer para que el corte de control sea agregado como una nueva fila en excel?

Estoy trabajando con Toba 2.5

Cualquier ayuda es bienvenida.

Saludos.
Alejandro

Hola Alejandro,

te hago un par de consultas:

1.- La subclase que incluis via el metodo mencionado, que padre tiene?.

2.- El corte de control lo agregas via codigo o via editor?.

Saludos

Hola Richard, buen día.

Las respuetas:

1 - La subclase tiene como padre a toba_ei_cuadro_salida_excel.

2 - El corte de control es agregado vía editor.

Explico un poco más el funcionamiento de la operación: el reporte tiene la opción de ser exportado a excel, para lo cual se utiliza otro manejador de salida, lo hago de la siguiente manera:

$cuadro->set_manejador_salida('excel', 'eicuadro_parte_diario_excel');

Luego la clase

eicuadro_parte_diario_excel

extiende de

toba_ei_cuadro_salida_excel

Dentro de la clase

eicuadro_parte_diario_excel

modifico el método

excel_cuadro

, para hacer una serie de cálculos. Si dejo a la función excel_cuadro tal como está originalmente la exportación con los cortes de control funciona correctamente pero obviamente sin los cálculos que yo necesito.

En conclusión: la exportación se rompe con los cambios que agrego en la función

excel_cuadro

Si te parece te puedo adjuntar el php de la clase.

Saludos.
Alejandro.

Agrego otro dato, el problema se genera al momento de que la function excel_cuadro recibe los parámetros, de la siguiente manera:

function excel_cuadro(&$filas, &$totales, &$nodo)

Ya que en $totales recibo vacío.

En cambio cuando no tengo cortes de control, la variable $totales que le llega al método excel_cuadro, es correcta.

Saludos.
Alejandro.

Hola Alejandro,

la variable $totales, quedo por compatibilidad con las versiones anteriores y se usa unicamente cuando no hay cortes y se totalizan columnas segun definicion. En ese caso el total se puede incluir dentro de la misma tabla o en una hoja aparte al finalizar el excel.

Por otra parte, supongo que las sumas que haces son lo suficientemente complicadas como para que no te alcance con el esquema de sumarizacion de usuario (Creo que no esta en la wiki… pero en el ejemplo del proyecto toba_referencia sobre cortes, esta seguro), ademas si estuviste mirando la clase toba_ei_cuadro seguro ya viste el metodo inspeccionar_sumarizaciones_usuario.
En ese caso, la idea es que en $nodo ya tenes la suma para ese conjunto de filas de acuerdo a las funciones que definiste en la subclase de ei_cuadro y que te servirian para todas las salidas.

Te iba a pedir que me subieras el codigo de ese metodo, asi que si lo tenes a mano mejor… de esa forma te puedo orientar con mas precision.

Saludos

Richard, te paso el php que uso.

Voy a mirar un poco el método inspeccionar_sumarizaciones_usuario pq no recuerdo si lo probé o no.

Saludos.
Alejandro.


eicuadro_parte_diario_excel.txt (7.87 KB)

Hola Alejandro,

me parece que en la subclase del ei_cuadro podrias definir una funcion sumarizar__XX donde realizarias los calculos que estas metiendo dentro de excel_cuadro, te conviene eso.

Esta funcion (excel_cuadro) cuando existen cortes de control, solamente recibe un subgrupo de las filas, vos necesitas trabajar sobre todas, asi que ese lugar no te sirve. Ademas, puesto asi terminas recalculando el total 1 vez por cada corte de control, lo que te lo haria muy ineficiente.

Esta un poco confuso el tema de los totales, fijate que hay una funcion excel_cuadro_totales_columnas que se llama en 2 momentos especificos y que trabaja con la funcion get_fila_totales, en tu caso estarias sacando un total por hoja?.

Por ahi te estas complicando de gusto, esa clase se intento hacer bastante granular como para que tuvieras que redefinir lo menos posible. La idea es que los calculos y manipulacion de datos se haga en toba_ei_cuadro y subclases… y las toba_ei_cuadro_salida_xx solo hagan la presentacion de lo calculado antes.

Saludos