/** * Evaluate a generic {@link ValueEval} argument to an array of double values that represents dates in POI. * * @param arg {@link ValueEval} an argument. * @param srcCellRow number cell row. * @param srcCellCol number cell column. * @return an array of doubles representing dates in POI. * @throws EvaluationException exception upon argument evaluation. */ public double[] EvaluateDatesArg(ValueEval arg, int srcCellRow, int srcCellCol) { if (arg == null) { return(new double[0]); } if (arg is StringEval) { return(new double[] { EvaluateDateArg(arg, srcCellRow, srcCellCol) }); } else if (arg is AreaEvalBase) { List <Double> valuesList = new List <Double>(); AreaEvalBase area = (AreaEvalBase)arg; for (int i = area.FirstRow; i <= area.LastRow; i++) { for (int j = area.FirstColumn; j <= area.LastColumn; j++) { valuesList.Add(EvaluateDateArg(area.GetValue(i, j), i, j)); } } double[] values = new double[valuesList.Count]; for (int i = 0; i < valuesList.Count; i++) { values[i] = valuesList[(i)]; } return(values); } return(new double[] { OperandResolver.CoerceValueToDouble(arg) }); }
/** * Evaluate a generic {@link ValueEval} argument to an array of double values that represents dates in POI. * * @param arg {@link ValueEval} an argument. * @param srcCellRow number cell row. * @param srcCellCol number cell column. * @return an array of doubles representing dates in POI. * @throws EvaluationException exception upon argument evaluation. */ public double[] EvaluateDatesArg(ValueEval arg, int srcCellRow, int srcCellCol) { if (arg == null) { return(new double[0]); } if (arg is StringEval) { return(new double[] { EvaluateDateArg(arg, srcCellRow, srcCellCol) }); } else if (arg is AreaEvalBase) { List <Double> valuesList = new List <Double>(); AreaEvalBase area = (AreaEvalBase)arg; for (int i = area.FirstRow; i <= area.LastRow; i++) { for (int j = area.FirstColumn; j <= area.LastColumn; j++) { // getValue() is replaced with getAbsoluteValue() because loop variables i, j are // absolute indexes values, but getValue() works with relative indexes values valuesList.Add(EvaluateDateArg(area.GetAbsoluteValue(i, j), i, j)); } } double[] values = new double[valuesList.Count]; for (int i = 0; i < valuesList.Count; i++) { values[i] = valuesList[(i)]; } return(values); } return(new double[] { OperandResolver.CoerceValueToDouble(arg) }); }