Unplanned
Last Updated: 17 Jul 2025 14:16 by Gilbert
Created by: Gilbert
Comments: 0
Category: SpreadProcessing
Type: Feature Request
1
Add support for the RANDBETWEEN function.
Unplanned
Last Updated: 31 Jul 2025 10:57 by Jonas

SEARCH function with the following format is valid only in Excel 365/2021 or later (with dynamic array support).
"=SEARCH({"Alpha","Beta","Gamma","Delta","Omega","Sigma","Zeta"}, "Omega")"

• It returns an array of numbers or errors, showing the position of each substring in "Omega".
• If a substring is found, you get its position (e.g., 1 for "Omega"); if not, you get #VALUE!.

Unplanned
Last Updated: 31 Jul 2025 11:12 by Jonas
Created by: Jonas
Comments: 0
Category: SpreadProcessing
Type: Feature Request
1

In Excel formulas, the double minus (--) is known as the "double unary operator." Its main purpose is to convert Boolean values (TRUE/FALSE) into numeric values (1/0).
How it works:
• TRUE becomes 1
• FALSE becomes 0
Example: Suppose you have an array formula like:

=SUM(--(B2:B20="Gamma"))

• (B2:B20="Gamma") produces an array of TRUE/FALSE.
• --(B2:B20="Gamma") converts that array to 1/0.
• SUM(...) then adds up the number of matches.

Some Excel functions (like SUM, SUMPRODUCT) require numbers, not Booleans.
The double unary is a concise way to force this conversion.

 

 

Unplanned
Last Updated: 12 Sep 2025 13:15 by Martin Ivanov
When the columns are using widths with too precise decimal values (ex: 150.33333333333334), the VisibleRange of ViewportPane reports wrong range in some situations. 

This causes issues when calculating element positions in a custom WorksheetUILayerBase in the context of RadSpreadsheet for WPF.
Unplanned
Last Updated: 23 Sep 2025 11:05 by Sandy
Setting transparency to a chart series color results in a corrupted document.
Completed
Last Updated: 02 Apr 2026 11:49 by ADMIN
Release 2026.1.402 (2026 Q1)
Created by: EUNKYUNG
Comments: 0
Category: SpreadProcessing
Type: Feature Request
1
XlsFormatProvider: Add support for hidden rows.
Unplanned
Last Updated: 17 Nov 2025 16:05 by Bart
Unable to obtain cached formula values for formulas whose expressions contain named ranges.
Unplanned
Last Updated: 09 Jan 2026 05:47 by Eric Moreau

Currently, if you have a decimal column in the DataTable, it is imported as a text column in the workbook. It should be preserved as a numeric column after importing.

Note: When importing a DataTable, each of the column's type is checked and a respective cell type is imported. 

 if (dataType.IsValueType && dataType.IsPrimitive && !dataType.IsEnum)
                    {
                        newValue = new NumberCellValue(Convert.ToDouble(value));
                    }
The check ensures only “simple” CLR value types are treated as numbers when importing from DataTable to the worksheet.

IsValueType: filters out reference types.

IsPrimitive: narrows to CLR primitives (sbyte, byte, short, ushort, int, uint, long, ulong, float, double, char, IntPtr, UIntPtr, bool).

!IsEnum: excludes enums.

In this code path, primitives are interpreted as numeric and converted to a Double for NumberCellValue. This avoids trying to numeric-convert arbitrary structs (e.g., guid, TimeSpan, custom structs), which should not be treated as numbers.

Decimal is not primitive, so it falls back to text, losing numeric semantics. This is the reason for the observed behavior.
Unplanned
Last Updated: 12 Jan 2026 06:56 by Eric Moreau
Created by: Eric Moreau
Comments: 0
Category: SpreadProcessing
Type: Feature Request
1

Currently, RadSpreadProcessing supports the following options:

namespace Telerik.Windows.Documents.Model.Drawing.Charts
{
    /// <summary>
    /// Specifies where a chart legend is placed relative to the plot area.
    /// </summary>
    public enum LegendPosition
    {
        /// <summary>
        /// Positions the legend to the right of the plot area.
        /// </summary>
        Right,

        /// <summary>
        /// Positions the legend below the plot area.
        /// </summary>
        Bottom,

        /// <summary>
        /// Positions the legend to the left of the plot area.
        /// </summary>
        Left,

        /// <summary>
        /// Positions the legend above the plot area.
        /// </summary>
        Top
    }
}

MS Excel supports setting "Top Right" Legend Position:

Unplanned
Last Updated: 13 Jan 2026 07:19 by Eric Moreau
Created by: Eric Moreau
Comments: 0
Category: SpreadProcessing
Type: Feature Request
1
RadPdfProcessing already offers exception handling mechanism which allows you to handle unexpected behavior during import/export. Thus, the import/export process skips the problematic part and continues the execution. This would be a great addition to the SpreadProcessing model as well. 
Unplanned
Last Updated: 13 Jan 2026 07:58 by Eric Moreau

An error occurs while importing an XLSX document with charts. Here is the stack trace:

   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.Contexts.XlsxWorkbookImportContext.PairSeriesGroupsWithAxes()
   at Telerik.Windows.Documents.FormatProviders.OpenXml.Model.Elements.Chart.PlotAreaElement.CopyPropertiesTo(IOpenXmlImportContext context, DocumentChart chart)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.Model.Elements.Chart.ChartElement.CopyPropertiesTo(IOpenXmlImportContext context, DocumentChart chart)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.Model.Elements.Chart.ChartSpaceElement.OnAfterRead(IOpenXmlImportContext context)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.Model.Elements.OpenXmlElementBase.Read(IOpenXmlReader reader, IOpenXmlImportContext context)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.Model.Parts.ChartPart.Import(IOpenXmlReader reader, IOpenXmlImportContext context)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.Model.Parts.OpenXmlPartBase.Import(Stream stream, IOpenXmlImportContext context)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.OpenXmlImporter`1.ImportPartFromArchive(ZipArchiveEntry zipEntry, PartBase part, IOpenXmlImportContext context)
   at Telerik.Windows.Documents.FormatProviders.OpenXml.OpenXmlImporter`1.Import(Stream input, IOpenXmlImportContext context)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider.ImportOverride(Stream input, CancellationToken cancellationToken)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.WorkbookFormatProviderBase.Import(Stream input, Nullable`1 timeout)

Unplanned
Last Updated: 14 Jan 2026 12:42 by Eric Moreau
XlsFormatProvider: NullReferenceException is thrown when importing a document that references an external workbook with an invalid or missing sheet name (#REF!)
Completed
Last Updated: 02 Apr 2026 11:47 by ADMIN
Release 2026.1.402 (2026 Q1)
Completed
Last Updated: 02 Apr 2026 11:47 by ADMIN
Release 2026.1.402 (2026 Q1)

XlsFormatProvider: InvalidOperationException is thrown when importing a document with an unsupported BIFF record.

Workaround: Re-save the file with Excel before importing it.

Unplanned
Last Updated: 16 Mar 2026 06:08 by Piotr

The current formula: 
<c r="A1" s="1">
<f>[1]BILANS_JI!$C$2</f>
<v>22611518.026189998</v>
</c>

Simple direct reference to a single external cell [1]BILANS_JI!$C$2
No function, just a linked cell

The expected value to be returned is 22611518.

Unplanned
Last Updated: 24 Apr 2026 06:54 by Joon-Sae
This is the stack trace: 
   at Telerik.Windows.Documents.Spreadsheet.Utilities.SpreadsheetHelper.UpdateFloatingImageSize(FloatingShapeBase shape)
   at Telerik.Windows.Documents.Spreadsheet.Utilities.SpreadsheetHelper.CalculateRotatableShapeBoundingRect(Point position, FloatingTransformableShape shape)
   at Telerik.Windows.Documents.Spreadsheet.Layout.RadWorksheetLayout.CalculateShapeBoundingRect(FloatingShapeBase shape)
   at Telerik.Windows.Documents.Spreadsheet.Layout.RadWorksheetLayout.UpdateShapesSizeAndPosition()
   at Telerik.Windows.Documents.Spreadsheet.Layout.RadWorksheetLayout.Measure(CancellationToken cancellationToken)
   at Telerik.Windows.Documents.Spreadsheet.Layout.RadWorksheetLayout.Measure(CellIndex frozenCellIndex, CancellationToken cancellationToken)
   at Telerik.Windows.Documents.Spreadsheet.Model.Workbook.UpdateWorksheetLayout(RadWorksheetLayout worksheetLayout, Worksheet worksheet, Boolean isForPrinting, CancellationToken cancellationToken)
   at Telerik.Windows.Documents.Spreadsheet.Model.Workbook.GetWorksheetLayout(Worksheet worksheet, Boolean isForPrinting, CancellationToken cancellationToken)
   at Telerik.Windows.Documents.Spreadsheet.Model.Workbook.GetWorksheetLayout(Worksheet worksheet, Boolean isForPrinting)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.Contexts.XlsxWorksheetImportContext.ImportShapesSizes()
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.Contexts.XlsxWorksheetImportContext.EndImport(XlsxWorkbookImportContext workbookContext)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.Contexts.XlsxWorkbookImportContext.EndImport()
   at Telerik.Windows.Documents.FormatProviders.OpenXml.OpenXmlImporter`1.Import(Stream input, IOpenXmlImportContext context)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider.ImportOverride(Stream input, CancellationToken cancellationToken)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.WorkbookFormatProviderBase.Import(Stream input, Nullable`1 timeout)
Unplanned
Last Updated: 08 May 2026 04:57 by Tim
Code to reproduce: 
            Workbook wb = new Workbook();
            Worksheet worksheet = wb.Worksheets.Add(); 
            PatternFill fill = new PatternFill(PatternType.DiagonalStripe, Colors.Red, Colors.Transparent);
            worksheet.Cells[0, 0].SetFill(fill);

            string outputFilePath = "Sample.pdf";
            File.Delete(outputFilePath);
            Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfFormatProvider =
                new Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider(); 
          
            //export to file
            using (Stream output = File.OpenWrite(outputFilePath))
            {
                pdfFormatProvider.Export(wb, output, TimeSpan.FromSeconds(10));
            }

            Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true });
Declined
Last Updated: 25 Sep 2017 12:03 by ADMIN
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.
Unplanned
Last Updated: 28 Sep 2017 06:35 by ADMIN
ADMIN
Created by: Nikolay Demirev
Comments: 0
Category: SpreadProcessing
Type: Feature Request
0
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.
Completed
Last Updated: 02 Jul 2020 12:01 by ADMIN
Release R3 2020
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', ' '));
        }
    }
}