|
|
@ -5,6 +5,7 @@ import com.fr.base.BaseUtils; |
|
|
|
import com.fr.base.Parameter; |
|
|
|
import com.fr.base.Parameter; |
|
|
|
import com.fr.base.ParameterMapNameSpace; |
|
|
|
import com.fr.base.ParameterMapNameSpace; |
|
|
|
import com.fr.base.TableDataNameSpace; |
|
|
|
import com.fr.base.TableDataNameSpace; |
|
|
|
|
|
|
|
import com.fr.base.Utils; |
|
|
|
import com.fr.base.io.IOFile; |
|
|
|
import com.fr.base.io.IOFile; |
|
|
|
import com.fr.data.TableDataSource; |
|
|
|
import com.fr.data.TableDataSource; |
|
|
|
import com.fr.design.actions.UpdateAction; |
|
|
|
import com.fr.design.actions.UpdateAction; |
|
|
@ -39,6 +40,7 @@ import com.fr.parser.BlockIntervalLiteral; |
|
|
|
import com.fr.parser.ColumnRowRangeInPage; |
|
|
|
import com.fr.parser.ColumnRowRangeInPage; |
|
|
|
import com.fr.parser.FRLexer; |
|
|
|
import com.fr.parser.FRLexer; |
|
|
|
import com.fr.parser.FRParser; |
|
|
|
import com.fr.parser.FRParser; |
|
|
|
|
|
|
|
import com.fr.parser.NumberLiteral; |
|
|
|
import com.fr.parser.SheetIntervalLiteral; |
|
|
|
import com.fr.parser.SheetIntervalLiteral; |
|
|
|
import com.fr.report.core.namespace.SimpleCellValueNameSpace; |
|
|
|
import com.fr.report.core.namespace.SimpleCellValueNameSpace; |
|
|
|
import com.fr.script.Calculator; |
|
|
|
import com.fr.script.Calculator; |
|
|
@ -98,6 +100,7 @@ import java.io.InputStream; |
|
|
|
import java.io.InputStreamReader; |
|
|
|
import java.io.InputStreamReader; |
|
|
|
import java.io.Reader; |
|
|
|
import java.io.Reader; |
|
|
|
import java.io.StringReader; |
|
|
|
import java.io.StringReader; |
|
|
|
|
|
|
|
import java.text.NumberFormat; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Comparator; |
|
|
|
import java.util.Comparator; |
|
|
@ -817,8 +820,24 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { |
|
|
|
if (entry.getValue().toString().startsWith("[") && entry.getValue().toString().endsWith("]")) { |
|
|
|
if (entry.getValue().toString().startsWith("[") && entry.getValue().toString().endsWith("]")) { |
|
|
|
Expression parse = calculator.parse(entry.getValue()); |
|
|
|
Expression parse = calculator.parse(entry.getValue()); |
|
|
|
ArrayExpression arrayExpression = (ArrayExpression) parse.getConditionalExpression(); |
|
|
|
ArrayExpression arrayExpression = (ArrayExpression) parse.getConditionalExpression(); |
|
|
|
FArray<Node> fArray = new FArray<>(arrayExpression.getArrays()); |
|
|
|
Node[] arrays = arrayExpression.getArrays(); |
|
|
|
|
|
|
|
List<Object> arrayList = new ArrayList<>(); |
|
|
|
|
|
|
|
for (Node array : arrays) { |
|
|
|
|
|
|
|
if (array instanceof NumberLiteral) { |
|
|
|
|
|
|
|
arrayList.add(NumberFormat.getInstance().parse(array.toString())); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
arrayList.add(array); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
FArray<Object> fArray = new FArray<>(arrayList); |
|
|
|
parameterMap.put(entry.getKey(), fArray); |
|
|
|
parameterMap.put(entry.getKey(), fArray); |
|
|
|
|
|
|
|
} else if (Utils.isNumeric(entry.getValue().toString())) { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
Number number = NumberFormat.getInstance().parse(entry.getValue().toString()); |
|
|
|
|
|
|
|
parameterMap.put(entry.getKey(), number); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
FineLoggerFactory.getLogger().warn("", e); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|