Implement export to XPS file format.
Example:
<sheetViews>
<sheetView tabSelected="1" view="pageBreakPreview" zoomScaleNormal="100" zoomScaleSheetLayoutView="100" workbookViewId="0">
<selection activeCell="J5" sqref="J5"/>
</sheetView>
</sheetViews>
When a formula contains new lines, it is parsed incorrectly as follows: - When it is shared formula it breaks the imported expression and replaces it with #NAME? error. - In normal case it simply preserves the formula string converting it to StringExpression. Workaround: Remove the new lines in the formulas. Have in mind that this code will fix the issue only for the second scenario, when the formula is not shared. CellRange usedCellRange = workbook.ActiveWorksheet.UsedCellRange; for (int row = usedCellRange.FromIndex.RowIndex; row < usedCellRange.ToIndex.RowIndex; row++) { for (int column = usedCellRange.FromIndex.ColumnIndex; column < usedCellRange.ToIndex.ColumnIndex; column++) { CellSelection cell = workbook.ActiveWorksheet.Cells[row, column]; ICellValue value = cell.GetValue().Value; if (value.RawValue.Contains("\n")) { cell.SetValue(value.RawValue.Replace('\n', ' ')); } } }
Implement support for form controls (Button, Combo Box, Check Box, Spin Button, List Box, Option Button, Group Box, Label, Scroll Bar).
Allow to password-protect a workbook, so that it cannot be shown (read) without the password.
Provide ability for working with comments in a spreadsheet document.
In Office 365 there are two types of comments:
This item applies to Threaded Comments only.
For Notes, please follow: SpreadProcessing: Provide API for Insert / Delete Comments (Notes)
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.
At this point the culture used by RadSpreadProcessing (in the FormatHelper and internally in SpreadsheetCultureHelper) is determined by the current thread culture on startup. Provide ability to: - to change the culture at runtime. Currently, when the thread culture is changed, RadSpreadProcessing is "stuck" with the original one. - set this culture independently of the current thread's one.
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.
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.
When I need to populate a cell that I find using a DefinedName I should parse RefersTo to get Worksheet name. But DefinedName class contains Scope property which has CurrentWorksheet and Workbook properties (internal). It would be very useful if these properties could be public.
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"/>.
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.