A1# is the postfix counterpart of the @ prefix. When A1 is the origin of a dynamic-array formula spilled into A1:A4, A1# refers to the whole spill range, so SUM(A1#) totals the four values and ROWS(A1#) returns 4. The new opcode ocSpill sits in the unary-operator range. The tokenizer produces it from a bare # after a reference or value. Otherwise # stays the start of a #REF! or #NAME! token. The compiler routes it through PostOpLine so it follows its operand in the RPN. ScSpilledRange pushes the spill range as an ScMatrixRangeToken so aggregating functions see the whole range, and ISREF reports it as a reference. A master yields its matrix. A plain number, string, or non-master matrix slot yields the the cell value. A freshly typed =A1# counts as an array result, so it promotes to a dynamic-array master and spills again. A cell that does not promote collapses the range by implicit intersection to the row-aligned value, or #VALUE! outside the range, keeping that cell's number format. Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> Change-Id: Idf2752af3f7575f6bc95b940344aa365415e4a2f Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/5785 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com> (cherry picked from commit 9b97b0fc91bce4b8726ea210347e8ea84270e148) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207904 Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
Spreadsheet Application Code
You can dump some information in a dbgutil build:
Shortcuts
CTRL+SHIFT+F12
Dumps the column width of the first 20 columns.
CTRL+SHIFT+F11
Dumps the graphic objects and their position and size in pixel.
CTRL+SHIFT+F6
Dumps the SfxItemSet representing the cell properties' of the current selection as a xml file. The file will be named dump.xml
The Cache Format
ScDocument::StoreTabToCache allows storing the content (not the formatting) of a table to a binary cache format.
The format is column orientated which allows quick serialization of the table.
-
Header:
- Number of Columns: 64 bit unsigned integer
-
Column:
- Column Index: 64 bit unsigned integer
- Column Size: 64 bit unsigned integer
- For each cell type block a new ColumnBlock
-
ColumnBlock:
- Start Row: 64 bit unsigned integer
- Block Size: 64 bit unsigned integer
- Type: 8 bit unsigned integer
- 0 : empty
- 1 : numeric
- for each cell: 64 bit IEEE 754 double precision value
- 2 : string
- for each cell: 32 bit signed string length followed by string length bytes of the string (UTF-8)
- 3 : formula
- for each cell: 32 bit signed string length followed by the formula in R1C1 notation as a string
Functions Supporting Wildcards or Regular Expressions
As this comes up every now and then, and rather should be documented in an extra list of the Help system, functions that support Wildcards or Regular Expressions and depend on the setting under Tools -> Options -> Calc -> Calculate are those that in ODF OpenFormula (ODFF) are defined to depend on the HOST-USE-REGULAR-EXPRESSIONS or HOST-USE-WILDCARDS properties, see ODF v1.3 part4 3.4 Host-Defined Behaviors https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#__RefHeading__1017868_715980110
- Array Functions
- CHOOSECOLS
- CHOOSEROWS
- DROP
- EXPAND
- HSTACK
- VSTACK
- TAKE
- TEXTSPLIT
- TOCOL
- TOROW
- WRAPCOLS
- WRAPROWS
- Database Functions
- DAVERAGE
- DCOUNT
- DCOUNTA
- DGET
- DMAX
- DMIN
- DPRODUCT
- DSTDEV
- DSTDEVP
- DSUM
- DVAR
- DVARP
- Information Functions
- COUNTIF
- COUNTIFS
- Lookup Functions
- HLOOKUP
- LOOKUP
- MATCH
- XMATCH
- VLOOKUP
- XLOOKUP
- FILTER
- SORT
- SORTBY
- UNIQUE
- Mathematical Functions
- RANDARRAY
- SEQUENCE
- SUMIF
- SUMIFS
- Statistical Functions
- AVERAGEIF
- AVERAGEIFS
- Text Functions
- SEARCH