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!)
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: 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: 12 Jan 2026 15:27 by ADMIN
ADMIN
Created by: Deyan
Comments: 12
Category: SpreadProcessing
Type: Feature Request
38
Add support for pivot tables.
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: 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: 27 Nov 2025 12:45 by Yannick Patton

LocalizableException is thrown after removing columns from a workbook with set Print Titles.

Workaround - Remove the PrintTitles before removing the columns:

WorksheetPageSetup pageSetup = workbook.ActiveWorksheet.WorksheetPageSetup;
pageSetup.PrintTitles.RepeatedRows = null;
pageSetup.PrintTitles.RepeatedColumns = null;

 

Unplanned
Last Updated: 26 Nov 2025 12:41 by ADMIN
Opening a file where there is a format string with modificator [Color11] causes an ArgumentException "Invalid modificator" This prevents the file from opening.
Unplanned
Last Updated: 17 Nov 2025 16:05 by Bart
Unable to obtain cached formula values for formulas whose expressions contain named ranges.
Completed
Last Updated: 12 Nov 2025 11:41 by ADMIN
Release 2025.4.1104 (2025 Q4)
ConditionalFormattingRange' s Formattings collection is not correctly enumerated when there are rules with intermittent ranges.
Unplanned
Last Updated: 11 Nov 2025 11:45 by Martin Ivanov
Currently, you cannot sort filtered cell ranges that contain merged cells. This is supported in Excel.
Unplanned
Last Updated: 04 Nov 2025 09:29 by EUNKYUNG
Created by: EUNKYUNG
Comments: 0
Category: SpreadProcessing
Type: Feature Request
1
XlsFormatProvider: Add support for hidden rows.
Completed
Last Updated: 10 Oct 2025 06:11 by ADMIN
Release 2025.3.1007 (2025 Q3)
Stacktrace: 
   at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
   at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
   at System.Collections.Generic.Dictionary`2.ContainsKey(TKey key)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.Model.Elements.Worksheets.ConditionalFormattingRuleElementX14.OnAfterRead(IXlsxWorksheetImportContext context) in C:\Work\document-processing\Documents\Spreadsheet\FormatProviders\OpenXml\Xlsx\Model\Elements\Worksheets\ConditionalFormatting\x14\ConditionalFormattingRuleElementX14.cs:line 62
Completed
Last Updated: 29 Sep 2025 14:22 by ADMIN
Release 2025.2.520 (2025 Q2)
This is a sample code to replicate the error which is triggered on export: 
            string inputFileName = "input.xlsx";
            if (!File.Exists(inputFileName))
            {
                throw new FileNotFoundException(String.Format("File {0} was not found!", inputFileName));
            }

            Telerik.Windows.Documents.Spreadsheet.Model.Workbook workbook;
            IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider();

            using (Stream input = new FileStream(inputFileName, FileMode.Open))
            { 
                workbook = formatProvider.Import(input, TimeSpan.MaxValue);
            }
            string outputFilePath = "output.xlsx";

            using (Stream output = new FileStream(outputFilePath, FileMode.Create))
            {
                formatProvider.Export(workbook, output, TimeSpan.MaxValue);
            }
            Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true });
Unplanned
Last Updated: 23 Sep 2025 11:05 by Sandy
Setting transparency to a chart series color results in a corrupted document.
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: 10 Sep 2025 12:38 by Giuseppe
Created by: Giuseppe
Comments: 0
Category: SpreadProcessing
Type: Feature Request
0
Add support for the FILTER function.
Unplanned
Last Updated: 03 Sep 2025 11:03 by Sandy
Add support for setting the Axis Type to Automatic.

Completed
Last Updated: 15 Aug 2025 13:49 by ADMIN
Release 2025.3.806 (2025 Q3)
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.
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.

 

 

1 2 3 4 5 6