Current Limitations
This document describes the current limitations of AFC as of the latest release mentioned in the release notes.
Spreadsheet Formats
- Excel .xml support is missing (parked for resurrection in an earlier version).
- The Excel .xls loader does not yet handle references to labels in formulas.
Excel
- AFC currently supports only the subset of Excel documented in this reference.
- Null values (empty cells) are not yet supported. In particular, an
AVERAGE
involving empty cells will return a different result than Excel. - Range intersections are parsed but not evaluated correctly.
- Ranges specified using named cells as endpoints are not supported. Named ranges, however, are.
- Named range unions are not supported. They are ignored when the spreadsheet is loaded and their name will therefore not be known to AFC.
- With
MATCH
, the last argument (the match type) must be constant, and the second argument (the match range) cannot reference a repeating section yet. - With
MATCH
, the range must be strictly ascending or descending for sorted searches to ensure results consistent with Excel. - With
INDEX
, the range argument cannot reference a repeating section yet. It also does not support 3-dimensional lookups. INDEX
does not return arrays (as in=SUM(INDEX(A1:B2;2))
).AND
andOR
cannot be used as aggregators over repeating sections yet.- Functions like
NPV()
,MIRR()
, andIRR()
cannot be used over repeating sections. - Array expressions are not supported (such as
{=INDEX({1,2;3,4};0;2)}
). - In Excel, a formula like
(A1 = 0)
returns false whenA1
isFALSE
. In AFC it is true. In both AFC and Excel,(A1 + 0 = 0)
returns true. - In Excel,
SUM
ignores booleans. In AFC it does not. In both, numeric operators like+
treat booleans as numbers. - String comparisons don’t sort umlauts and such the way Excel does (see String Comparisons).
- The options flag “Precision as displayed” is not supported. AFC always uses the full precision of the configured numeric type internally and only rounds final outputs.
Numeric Types
Scaled Long
- Currently computes exponentiation and conversion from and to dates using the
double
type. - Scaled division currently swaps arguments on the stack a little too much.
BigDecimal
POWER()
and the^
operator with non-integer exponents are converted todouble
operations.IRR()
throwsIllegalArgumentException
when the function does not converge.MIRR()
is not supported because it needs fractional exponents.
Interfacing with Java
- There is no support for
null
yet (see also the note on empty cells). - When binding a
String
-valued output method to a date field in Excel, the resulting value is not formatted as a date, but as a number. This is because, internally, dates are treated as numbers. This is the same behaviour as that shown byCONCATENATE
and&
in Excel itself. - When binding a
String
-valued output method to a numeric field with a special cell format, that format is not respected. This is the same behaviour as that shown byCONCATENATE
and&
in Excel itself. - Aggregators spanning nested sections are not yet supported, except for the special case which is useful for
DSUM
et al..
Miscellaneous
- The interactive demo is still somewhat broken (because of missing info methods on the spreadsheet query interface).