Split allows you to split the window into different panes that each scroll separately. This feature is different than the horizontal/vertical split of freeze panes, which is supported.
When there are split panes in a workbook, the topLeftCell property can be omitted. In this case, the format provider throws NullReferenceException.
The ADDRESS function is used to obtain the address of a cell in a worksheet, given specified row and column numbers. For example, ADDRESS(2,3) returns $C$2.
The r attribute of a cell defines the reference the cell is pointing to in a style similar to A1. Setting this attribute is optional but when set to an empty string, it cannot be imported - an ArgumentException is thrown with message "cellName" by the Guard class in NameConverter.ConvertCellNameToIndex(). Here is an example of such a definition: <row r="1" spans="1:12"> <c r=""/> </row> MS Excel and Libre Office can open such documents.
XLSB is binary format that should theoretically allow fast reading and writing to the file.
Excel exports shapes as TwoCellAnchor elements, which specifies the top left and the bottom right location of a shape. The size of the shape is recorded in the extents element (a:ext), cx and cy attributes. At the moment, the spreadsheet import first looks at the extents element and if it doesn't find the size there, calculates it from the TwoCellAnchor element. However, if an XLSX document has a shape with incorrect size indicated in the extents element, Excel will still be able to open it correctly, probably because it looks at the TwoCellAnchor element. RadSpreadsheet/SpreadProcessing, on the other hand, will show the image with an incorrect size.
Add API for registering custom image decoders, e.g. for .emf and .wmf images.
WorksheetPageSetup.ScaleFactor is limited in the range 0.5 - 4 due to limitations in the UI implementations, but this is not needed in RadSpreadProcessing alone.
Add support for theme effects (format schemes). They are described in OOXML using the 'fmtScheme' element. Thing of providing predefined sets. In MS Excel the UI for changing is located in Page Layout tab -> Themes -> Effects.
Implement export to XPS file format.
Implement support for form controls (Button, Combo Box, Check Box, Spin Button, List Box, Option Button, Group Box, Label, Scroll Bar).
Create API allowing conversion of .NET standard numeric format strings to Excel/RadSpreadsheet's number formats. For example, G3 .NET numeric format should be converted to scientific notation RadSpreadsheet mode - CellValueFormat("0.00E+00").
Introduce support for cell reference ranges which refer to whole columns. For example "=Sheet1$A:$A" refers to the whole column A.
A reference that refers to the same cell or range on multiple sheets. Example: =SUM(Den1:Den31!C10) will sum C10 from all sheets between Den1 and Den3.
When defaultThemeVersion is missing from the file, some styles are not shown when the document is opened in MS Excel.
The value of Worksheet.UsedCellRange could be calculated during the import of the workbook - as all cells are processed anyway. This will improve the performance of the first usage of this property, which is very common scenario. Also xlsx documents can have optional 'dimension' element which is used to specify the used cell range: <dimension ref="A1:C2"/>.
Some functions are exported from Excel with the _xlfn. prefix as compatibility measure with older versions of MS Excel (future functions, see here https://msdn.microsoft.com/en-us/library/dd907480(v=office.12).aspx , https://support.office.com/en-ca/article/Issue-An-xlfn-prefix-is-displayed-in-front-of-a-formula-882f1ef7-68fb-4fcd-8d54-9fbb77fd5025 ) RadSpreadProcessing do not support these and the spreadsheet treats the function as not supported even when it is. Example: <row r="1" spans="2:2" x14ac:dyDescent="0.25"> <c r="B1" t="b"> <f>_xlfn.ISFORMULA(C2)</f> <v>0</v> </c> </row> This could be observed with the ISFORMULA function.
Now there is no public API that allows the users to check if a Worksheet is empty or not. The UsedCellRange property returns a cell range that is only the cell A1 even if it is empty too. Possible solution is to expose IsEmpty property of the CellRange. Workaround: Check if Worksheet.UsedCellRange contains only A1, and that additionally A1 is empty.