Foros del Web » Programando para Internet » PHP »

Función Residuo en PHPExcel

Estas en el tema de Función Residuo en PHPExcel en el foro de PHP en Foros del Web. Hola estimados Tengo el siguiente problema Estoy usando la función RESIDUO (mod) en phpexcel, la que no me funciona cuando la incorporo dentro de otra ...
  #1 (permalink)  
Antiguo 25/06/2014, 00:12
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 3 meses
Puntos: 1
Pregunta Función Residuo en PHPExcel

Hola estimados

Tengo el siguiente problema

Estoy usando la función RESIDUO (mod) en phpexcel, la que no me funciona cuando la incorporo dentro de otra función, en este caso un SI (IF). Esto no me permite generar el excel.

Código
Código PHP:
$fecha_inicio 'A'.$n_fila;//celda que contiene la fecha de inicio 26-09-2013
$fecha_fin 'B'.$fila;//celda que contiene la fecha de termino 01-06-2014
$fila_resultado 'C'.$fila//celda que contendra el resultado
$calculo_anyos '=(IF('.$fecha_fin.'="-",0,MOD(('.$fecha_fin.'-'.$fecha_inicio.'),200)))';
//en excel se ve asi =(SI(B2="-";0;RESIDUO((B2-A2);200))) y el resultado es 48
$objPHPExcel->getActiveSheet()->setCellValue($fila_resultado$calculo_anyos); 
inclusive fuera, conteniendo funciones en su interior
Código PHP:
$fecha_inicio 'A'.$n_fila;//celda que contiene la fecha de inicio
$fecha_fin 'B'.$fila;//celda que contiene la fecha de termino
$fila_resultado 'C'.$fila//celda que contendra el resultado
$calculo_anyos '=MOD(IF('.$fecha_fin.'="-",0,(('.$fecha_fin.'-'.$fecha_inicio.'))),200)';
$objPHPExcel->getActiveSheet()->setCellValue($fila_resultado$calculo_anyos); 

Si ejecuto la funciÓn en solitario funciona sin problemas
Código PHP:
$fila_resultado 'D'.$n_fila
$prueba_mod 
'=MOD(600,365)';
$objPHPExcel->getActiveSheet()->setCellValue($fila_resultado$prueba_mod); 
Sera quizas un bug de PHPExcel???

Atento a sus comentarios, gracias
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post

Última edición por a n g e l u s; 25/06/2014 a las 00:14 Razón: cambio en el código de ejemplo
  #2 (permalink)  
Antiguo 25/06/2014, 07:26
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Función Residuo en PHPExcel

y que error te esta dando ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 25/06/2014, 11:00
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: Función Residuo en PHPExcel

Hola hhs

El problema es que genera un excel corrupto y no se abre. Hice un control de errores para verificar y no arroja ningun error ni advertencias.

El mensaje de excel es
Cita:
Excel no puede abrir el archivo porque el formato o la extensión de este no son válidos, compruebe que el archivo no se ha dañado y que la extensión del mismo coincide con el formato del archivo
Si quito el código con la función MOD (entre otras funciones), se abre perfectamente.

Atento a tus comentarios
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #4 (permalink)  
Antiguo 25/06/2014, 12:38
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Función Residuo en PHPExcel

Lo mas probable entonces es que $calculo_anyos no tenga lo que esperas: https://github.com/PHPOffice/PHPExce...mbers-and-text
dale un var_dump o print_r y verifica que realmente la operación se esta constuyendo como debe de ser
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 25/06/2014, 13:23
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 3 meses
Puntos: 1
Exclamación Respuesta: Función Residuo en PHPExcel

Hola hhs

Si ya lo hice quitandole el igual(=) antes de la funcion, esto evita que "compile", y te aparece la función armada en ingles.
Si reemplazas los textos a español y cambias las comas por pto y coma, funciona perfectamente.

El problema sigue siendo la compilación del MOD dentro de otra función.

Código PHP:
Ver original
  1. $fecha_inicio = 'A'.$n_fila;//celda que contiene la fecha de inicio 26-09-2013
  2. $fecha_fin = 'B'.$fila;//celda que contiene la fecha de termino 01-06-2014
  3. $fila_resultado = 'C'.$fila//celda que contendra el resultado
  4. $calculo_anyos = '(IF('.$fecha_fin.'="-",0,MOD(('.$fecha_fin.'-'.$fecha_inicio.'),200)))';//se quita el signo igual para que no compile
  5. //en excel se ve asi (IF(B2="-",0,MOD((B2-A2),200)))
  6. $objPHPExcel->getActiveSheet()->setCellValue($fila_resultado, $calculo_anyos);
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post

Etiquetas: formulas, mod, phpexcel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:07.