Spire.XLS for .NET
- Overview
- Features
- Examples
- Guideline
- Support
- What's New
- Live Demo

Spire.XLS for .NET is a professional Excel .NET API that can be used to create, read, write, convert and print Excel files in any type of .NET (C#, VB.NET, ASP.NET, .NET Core, .NET 5.0, .NET 6.0, MonoAndroid and Xamarin.iOS) application. Spire.XLS for .NET offers object model Excel API for speeding up Excel programming in .NET platform - create new Excel documents from template, edit existing Excel documents and convert Excel files.
This Professional .NET Excel API is a standalone Excel .NET managed assembly and does not depend on Microsoft Office Excel. Spire.XLS for .NET offers support both for the old Excel 97-2003 format (.xls) and for the new Excel 2007, Excel 2010, Excel 2013, Excel 2016 and Excel 2019 (.xlsx, .xlsb, .xlsm), along with Open Office (.ods) format. It features fast and reliably compared with developing your own spreadsheet manipulation solution or using Microsoft Automation.
Spire.XLS for .NET enjoys good reputation in both enterprise and individual customers. These customer types include Banks, Data processing houses, Educational institutions, Government organizations, Insurance firms, Legal institutions, Postal/cargo services and etc.
-
Convert
-
Export
-
Validate
-
Formula
-
Format
-
Chart
-
Pivot Table
-
Group
-
Merge
-
Highlight
Convert Excel to PDF
Whenever you need to share an important Excel report with a partner, it's best to convert the file to PDF to ensure it looks the same as it does on your device.

Export Data from Database to Excel
When data is exported from a database to Excel, it can be analyzed and visualized, as well as viewed and processed by users who are not database users.

Apply Data Validation
Data validation in Excel controls what kind of data can be entered into a certain cell, which ensures that all data entries are accurate and consistent.

Insert Formulas and Functions
Formula is an expression that calculates values in a cell or in a range of cells, while function is a predefined formula already available in Excel. Both formulas and functions are very useful when you need to calculate numbers or solve math problems in Excel.

Apply Conditional Formatting
Conditional formatting is a helpful feature that allows applying special formats to cells meeting specific criteria. It is often used to emphasize or differentiate data stored in worksheets.

Create a Chart
Chart is a fantastic tool to visually group and analyze data. It provides the reader with the structure of the data set and displays the data in a graphical representation, making it easier for most users to see the data.

Create a Pivot Table
Pivot table is a kind of interactive table that allow users to quickly categorize, calculate, summarize and analyze large amounts of data in a concise tabular format.

Group Rows or Columns
For worksheets with large amounts of data, grouping rows or columns that contain similar information can make the worksheet more compact and understandable.

Merge Excel Files
Merging Excel files with associated content can help us work with worksheet data more easily and also make it easier to share and read the contents of our workbooks.

Find and Highlight
You can find all cells containing a specific value and highlight them with the same background color to make the value outstanding and more easily to be found out.

.NET
Standalone .NET API
100% independent .NET Excel class library
which doesn't require Microsoft Office to be installed on system.
VERSION
- Excel 97-2003
- Excel 2007
- Excel 2010
- Excel 2013
- Excel 2016
- Excel 2019
- OpenOffice
OPERATION
Powerful Toolset, Multichannel Support
-
Import and Export Data
-
Reports
-
Manage Comments
-
Work with Pivot Table
-
Work with Excel Charts
-
Images and Shapes
-
Find Replace Highlight
-
Manage Hyperlinks
-
Print
-
Header and Footer
-
Text and Image Watermark
-
Conditional Formatting
-
Excel Formula
-
Set auto-filters
& Page Breaks -
Merge Split Cells
and Files -
Protect, Encrypt, Decrypt
CONVERSION
Conversion File Documents with High Quality
-
TEXT
-
XPS
-
SVG
-
PDF
-
XML
-
Image


XLsx,XLSM,XLSB,ODS

-
CSV
-
HTML
-
PNG
-
BMP
-
JPEG
-
EMF
-
TIFF

-
Chart
MAIN FUNCTION
100% Standalone .NET API,
No Microsoft Office Automation
Powerful & High Quality
Excel File Conversion
Create Excel Report from Comprehensive Workbook Designer
Generate Excel workbook from scratch, or load a workbook from either folder or file stream. Developers can also save it to file, file stream or web response. Spire.XLS for .NET offers a wide range of security features including excel encryption/decryption, digital signature, tracking changes, cell hide/unhide, worksheet lock/unlock.Freely Operate worksheet
Spire.XLS for .NET enables developers to create, add, rename, edit, delete/move and hide/show worksheet in either C#, VB.NET or ASP.NET. Developers can also copy, transpose, and consolidate across worksheets with full contents. This professional Excel .NET class library also embeds many flexible options for displaying worksheets, such as setting page setup options, page breaks, zoom-setting, freeze panes, headers/footers, add/extract/remove textbox, print excel files, print paper size and print area etc.Easily Manipulate cells & Excel Calculation Engine at run time
Developers can easily manipulate Excel cells and Evaluate formula value in C#, VB.NET or ASP.NET at runtime. Super-fast, scalable excel calculation engine is compatible with the 97-2003/2007/2010/2013/2016/2019 Excel. Cell Styles are supported by this Excel .NET API, such as merging/unmerging cells, copying rows/columns/cells, wrapping/unwrapping text, setting text alignment/rotation, adding interior, adding excel borders, locking/unlocking cells and etc. Font formats, like setting font type, size, color, bold, italic, strikeout and underlining etc. is also fully supported. Conditional formatting, text search and replace, filter and data validation can be applied to cells as easily as you expect.Chart, Data and other Elements
Spire.XLS for .NET provides a wide range of Chart: Pie Chart, Bar Chart, Column Chart, Line Chart, Radar Chart, Doughnut Chart, Waterfall Chart, Bubble Chart, Combination Chart, Sparkline and Pivot Chart etc. This Excel .NET API also supports data transporting between database and Excel in C# VB.NET or ASP.NET, import excel to database and export database to excel, add/update/remove slicers, converting between text and numbers. Hyperlinks and templates are also supported by Spire.XLS for .NET.Pro Edition $999
Spire.XLS Pro Edition supports converting files from Excel to PDF, HTML, Excel to CSV, Excel to Text, Excel to Image and Excel to XML(the Excel can be either .XLS or .XLSX) and it is included in Spire.XLS Pack.
Standard Edition $799
Spire.XLS for .NET Standard Edition only can be used for .NET and doesn't support print and conversion function.
Standard Edition doesn't work on .NET Core.
Free Edition $0
Free version is limited to 5 sheets per workbook and 200 rows per sheet. It doesn't support the print function. When converting Excel files to other formats, such as you can only get the first 3 pages of PDF/XPS, and you can only convert first 3 sheets to Images.
GET STARTED
Free Trials for All Progress Solutions
Platforms
Spire.XLS for .NET enables developers/programmers to build ASP.NET, Web Services, WinForms or any other type of application for any .NET Framework version from 2.0 to 4.5, .NET 5.0, .NET 6.0, .NET core, .NET Standard, MonoAndroid and Xamarin.iOS. Full support for 32-bit and 64-bit system.
File Format Supports
Spire.XLS for .NET supports lots of file formats.- Spire.XLS for .NET offers support both for the old Excel 97-2003 format (.xls) and for the new Excel 2007, Excel 2010, Excel 2013, Excel 2016 and Excel 2019 (.xlsx, .xlsb, .xlsm), along with Open Office(.ods) format.
- Save as HTML is available.
- Load and save documents in the tab delimited file format.
- Comprehensive support of the CSV format to interact with a variety of applications.
- Easily extract text by saving in plain text format.
Conversion
Spire.XLS for .NET has powerful conversion ability and it enables converting Excel files to most common and popular formats.- Excel to HTML/XML/CSV
- XML/CSV to Excel
- Excel to Image
- Excel to Text
- Excel to PDF
- Excel to XPS
- Excel to SVG
Contents Features
Spire.XLS for .NET offers a wide range of features and the main features are listed as below:- Create and Edit Excel
- Find and Replace Data
- Print excel files
- Import/Export data from a DataTable, DataView, Array, DataGrid etc.
- Save Excel to file/Stream or as web response
- Create charts
- Read and write hyperlinks
- Create auto filters
- Implement Data Sorting
- Implement Data Validations
- Merge/Unmerge Cells and files
- Group/UnGroup Rows and Columns
- Insert/Delete or Hide Rows, Columns and Sheets
- Calculate Complex Excel Formula
- Freeze/Unfreeze Panes
- Insert Hyperlinks to link data
- Protect/Unprotect Worksheets
- Create Pivot Tables
- Encrypt/Decrypt Files
- Load/Save Excel VBA
- Merge data into Excel with MarkerDesigner
Formatting Features
Spire.XLS for .NET provides detailed programmatic access to formatting properties of all spreadsheet elements.- Apply all characters formatting in the cells including fonts, colors, effects, fill and shading.
- Apply all the Number Format Settings (supported in MS Excel) for the cells.
- Set all types of Text Alignment settings.
- Apply different kinds of Font Settings for the cells.
- Apply different Colors to Cells, Fonts, Gridlines, Graphic objects etc.
- Apply different Rich Text formatting in a single cell.
- Apply different Border Settings on cells.
- Apply different Background Patterns on cells.
- Apply gradient Background Patterns on cells.
- Apply Format Settings on a Worksheet, Row, Column or a range of cells etc.
Page Setup Features
Spire.XLS for .NET enables developers/programmers to set PageSetup options.- Adjust your page orientation, scaling, paper size.
- Specify your margins and page centering.
- Create or edit your header and/or footer with image.
- Set print area, print titles, or turn on gridlines etc
- Managing Page Breaks
Feature Details
Support | Excel97~2003 | Excel2007 | Excel2010 | Excel2013 | Excel2016 | ||
Operation | Create New Workbook | Edit Existing Workbook | |||||
Save to file | Save to stream | Save as web response | |||||
Workbook Properties Setup | Worksheet Print Setup | ||||||
Worksheet Copy | Cells Data Copy | Cells Styles Copy | Cells Merge | ||||
Lock Worksheet | Unlock Worksheet | ||||||
Data Table Import | Data Table Export | ||||||
Freezepane | Group | ||||||
Filter | Data Validation | ||||||
Marker Designer | Template | Auto Populate | Style Copy | Variables | |||
Format Cells | Number Format | Text Alignment | Font | ||||
Cell Border | Cell Fill | Cell Protection | Interior | ||||
Content | Formula (all 531 entries supported) | Chart (all 74 types supported) | |||||
Image | Pivot Table | RichText | |||||
Hyperlink | Comments | VBA | |||||
Convert | XML | Image | CSV | Text |
Not supported in Standard Edition |
Request free customized demo just for you. |
High Quality Conversion
Convert Excel to PDFTutorials / Live Demo / Orginial Excel and PDF fileExcel Chart
Excel ChartTutorials / Live Demo / C# CodeMarker Designer
Marker DesignerTutorials / Live Demo / C# CodeData Import/Export
Import Excel from DataTableTutorials / Live Demo / C# CodeRuntime Excel Calculation
Runtime Excel CalculationTutorials / Live Demo / C# CodeCreate Excel Pivot Table
Create Excel Pivot TableTutorials / Live Demo / C# Code
Beginners Guide is the first step towards learning the basic information of Spire.XLS for .NET |
Program Guide lists the detailed features of our Spire.XLS for .NET and you can search for the information you want. |
The Videos give an operation guide by video. You can check the produce step by step. |
|||||||||||
Frequently asked question for Spire.XLS of technical and function issues. |
We guarantee one business day Forum questions Reply. |
We guarantee one business day E-mail response. |
|||||||||||
Free Customized service for OEM Users. |
Skype name: iceblue.support |
Apply for a Free Trial License File. |
|||||||||||
- It relates to our components stored on E-iceblue online store.
- It costs less than 2 hours for us to complete it. If it costs more than 2 hours, please contact our [email protected]
This is the list of changelogs of Spire.XLS New release and hotfix. You can get the detail information of each version's new features and bug solutions.
Hotfix Version: 15.3
'Category | ID | Description |
New feature | - | Added support for creating slicer using table data.
Workbook wb = new Workbook(); Worksheet worksheet = wb.Worksheets[0]; worksheet.Range["A1"].Value = "fruit"; worksheet.Range["A2"].Value = "grape"; worksheet.Range["A3"].Value = "blueberry"; worksheet.Range["A4"].Value = "kiwi"; worksheet.Range["A5"].Value = "cherry"; worksheet.Range["A6"].Value = "grape"; worksheet.Range["A7"].Value = "blueberry"; worksheet.Range["A8"].Value = "kiwi"; worksheet.Range["A9"].Value = "cherry"; worksheet.Range["B1"].Value = "year"; worksheet.Range["B2"].Value2 = 2020; worksheet.Range["B3"].Value2 = 2020; worksheet.Range["B4"].Value2 = 2020; worksheet.Range["B5"].Value2 = 2020; worksheet.Range["B6"].Value2 = 2021; worksheet.Range["B7"].Value2 = 2021; worksheet.Range["B8"].Value2 = 2021; worksheet.Range["B9"].Value2 = 2021; worksheet.Range["C1"].Value = "amount"; worksheet.Range["C2"].Value2 = 50; worksheet.Range["C3"].Value2 = 60; worksheet.Range["C4"].Value2 = 70; worksheet.Range["C5"].Value2 = 80; worksheet.Range["C6"].Value2 = 90; worksheet.Range["C7"].Value2 = 100; worksheet.Range["C8"].Value2 = 110; worksheet.Range["C9"].Value2 = 120; // Get slicer collection XlsSlicerCollection slicers = worksheet.Slicers; //Create a super table with the data from the specific cell range. IListObject table = worksheet.ListObjects.Create("Super Table", worksheet.Range["A1:C9"]); int count = 3; int index = 0; foreach (SlicerStyleType type in Enum.GetValues(typeof(SlicerStyleType))) { count += 5; //Add a Slicer through table data : here invoke Add(IListObject, string, int) api. String range = "E" + count; index = slicers.Add(table, range.ToString(), 0); //Style setting XlsSlicer xlsSlicer = slicers[index]; xlsSlicer.Name = "slicers_" + count; xlsSlicer.StyleType = type; } //Save to file wb.SaveToFile("output.xlsx", ExcelVersion.Version2013); |
New feature | - | Added support for creating slicer using pivot table data.
Workbook wb = new Workbook(); Worksheet worksheet = wb.Worksheets[0]; worksheet.Range["A1"].Value = "fruit"; worksheet.Range["A2"].Value = "grape"; worksheet.Range["A3"].Value = "blueberry"; worksheet.Range["A4"].Value = "kiwi"; worksheet.Range["A5"].Value = "cherry"; worksheet.Range["A6"].Value = "grape"; worksheet.Range["A7"].Value = "blueberry"; worksheet.Range["A8"].Value = "kiwi"; worksheet.Range["A9"].Value = "cherry"; worksheet.Range["B1"].Value = "year"; worksheet.Range["B2"].Value2 = 2020; worksheet.Range["B3"].Value2 = 2020; worksheet.Range["B4"].Value2 = 2020; worksheet.Range["B5"].Value2 = 2020; worksheet.Range["B6"].Value2 = 2021; worksheet.Range["B7"].Value2 = 2021; worksheet.Range["B8"].Value2 = 2021; worksheet.Range["B9"].Value2 = 2021; worksheet.Range["C1"].Value = "amount"; worksheet.Range["C2"].Value2 = 50; worksheet.Range["C3"].Value2 = 60; worksheet.Range["C4"].Value2 = 70; worksheet.Range["C5"].Value2 = 80; worksheet.Range["C6"].Value2 = 90; worksheet.Range["C7"].Value2 = 100; worksheet.Range["C8"].Value2 = 110; worksheet.Range["C9"].Value2 = 120; // Get pivot table collection Spire.Xls.Collections.PivotTablesCollection pivotTables = worksheet.PivotTables; //Add a PivotTable to the worksheet CellRange dataRange = worksheet.Range["A1:C9"]; PivotCache cache = wb.PivotCaches.Add(dataRange); //Cell to put the pivot table Spire.Xls.PivotTable pt = worksheet.PivotTables.Add("TestPivotTable", worksheet.Range["A12"], cache); //Drag the fields to the row area. PivotField pf = pt.PivotFields["fruit"] as PivotField; pf.Axis = AxisTypes.Row; PivotField pf2 = pt.PivotFields["year"] as PivotField; pf2.Axis = AxisTypes.Column; //Drag the field to the data area. pt.DataFields.Add(pt.PivotFields["amount"], "SUM of Count", SubtotalTypes.Sum); //Set PivotTable style pt.BuiltInStyle = PivotBuiltInStyles.PivotStyleMedium10; pt.CalculateData(); //Get slicer collection XlsSlicerCollection slicers = worksheet.Slicers; //Add a Slicer through pivot table data: here invoke Add(IPivotTable, string, int) api. int index = slicers.Add(pt, "E12", 0); XlsSlicer xlsSlicer = slicers[index]; xlsSlicer.Name = "test_xlsSlicer"; xlsSlicer.Width = 100; xlsSlicer.Height = 120; xlsSlicer.StyleType = SlicerStyleType.SlicerStyleLight2; xlsSlicer.PositionLocked = true; //Get SlicerCache object of current slicer XlsSlicerCache slicerCache = xlsSlicer.SlicerCache; slicerCache.CrossFilterType = SlicerCacheCrossFilterType.ShowItemsWithNoData; //Style setting XlsSlicerCacheItemCollection slicerCacheItems = xlsSlicer.SlicerCache.SlicerCacheItems; XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems[0]; xlsSlicerCacheItem.Selected = false; XlsSlicerCollection slicers_2 = worksheet.Slicers; IPivotField r1 = pt.PivotFields["year"]; int index_2 = slicers_2.Add(pt, "I12", r1); XlsSlicer xlsSlicer_2 = slicers[index_2]; xlsSlicer_2.RowHeight = 40; xlsSlicer_2.StyleType = SlicerStyleType.SlicerStyleLight3; xlsSlicer_2.PositionLocked = false; //Get SlicerCache object of current slicer XlsSlicerCache slicerCache_2 = xlsSlicer_2.SlicerCache; slicerCache_2.CrossFilterType = SlicerCacheCrossFilterType.ShowItemsWithDataAtTop; //Style setting XlsSlicerCacheItemCollection slicerCacheItems_2 = xlsSlicer_2.SlicerCache.SlicerCacheItems; XlsSlicerCacheItem xlsSlicerCacheItem_2 = slicerCacheItems_2[1]; xlsSlicerCacheItem_2.Selected = false; pt.CalculateData(); //Save to file wb.SaveToFile("out.xlsx", ExcelVersion.Version2013); |
New feature | - | Added support for removing slicer.
Workbook wb = new Workbook(); wb.LoadFromFile(inputFile); //Get slicer collection of first worksheet Worksheet worksheet = wb.Worksheets[0]; XlsSlicerCollection slicers = worksheet.Slicers; //Remove the first slicer by index slicers.RemoveAt(0); Worksheet worksheet_2 = wb.Worksheets[1]; //Remove all slicers worksheet_2.Slicers.Clear(); wb.SaveToFile(outputFile, ExcelVersion.Version2013); |
New feature | - | Added support for modifying slicer.
Workbook wb = new Workbook(); wb.LoadFromFile("in.xlsx"); //Get the first worksheet of workbook Worksheet worksheet = wb.Worksheets[0]; //Get slicer collection XlsSlicerCollection slicers = worksheet.Slicers; //Style setting XlsSlicer xlsSlicer = slicers[0]; xlsSlicer.StyleType = SlicerStyleType.SlicerStyleDark4; xlsSlicer.Caption = "Slicer"; xlsSlicer.PositionLocked = true; XlsSlicerCacheItemCollection slicerCacheItems = xlsSlicer.SlicerCache.SlicerCacheItems; XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems[0]; xlsSlicerCacheItem.Selected = false; string displayValue = xlsSlicerCacheItem.DisplayValue; //Get SlicerCache object of current slicer XlsSlicerCache slicerCache = xlsSlicer.SlicerCache; slicerCache.CrossFilterType = SlicerCacheCrossFilterType.ShowItemsWithNoData; //Save to file wb.SaveToFile("out.xlsx", ExcelVersion.Version2013); |
New feature | - | Added support for retrieving slicer information.
Workbook wb = new Workbook(); wb.LoadFromFile("in.xlsx"); //Get slicer collection of first worksheet Worksheet worksheet = wb.Worksheets[0]; XlsSlicerCollection slicers = worksheet.Slicers; StringBuilder builder = new StringBuilder(); builder.AppendLine("slicers.Count:" + slicers.Count); XlsSlicer xlsSlicer = slicers[1]; builder.AppendLine("xlsSlicer.Name:" + xlsSlicer.Name); builder.AppendLine("xlsSlicer.Caption:" + xlsSlicer.Caption); builder.AppendLine("xlsSlicer.NumberOfColumns:" + xlsSlicer.NumberOfColumns); builder.AppendLine("xlsSlicer.ColumnWidth:" + xlsSlicer.ColumnWidth); builder.AppendLine("xlsSlicer.RowHeight:" + xlsSlicer.RowHeight); builder.AppendLine("xlsSlicer.ShowCaption:" + xlsSlicer.ShowCaption); builder.AppendLine("xlsSlicer.PositionLocked:" + xlsSlicer.PositionLocked); builder.AppendLine("xlsSlicer.Width:" + xlsSlicer.Width); builder.AppendLine("xlsSlicer.Height:" + xlsSlicer.Height); //Get SlicerCache object of current slicer XlsSlicerCache slicerCache = xlsSlicer.SlicerCache; builder.AppendLine("slicerCache.SourceName:" + slicerCache.SourceName); builder.AppendLine("slicerCache.IsTabular:" + slicerCache.IsTabular); builder.AppendLine("slicerCache.Name:" + slicerCache.Name); XlsSlicerCacheItemCollection slicerCacheItems = slicerCache.SlicerCacheItems; XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems[1]; builder.AppendLine("xlsSlicerCacheItem.Selected:" + xlsSlicerCacheItem.Selected); File.WriteAllText("out.txt", builder.ToString()); wb.Dispose(); |
New feature | SPIREXLS-5302 | Added support for modifying the names of slicer.
Workbook wb = new Workbook(); wb.LoadFromFile(inputFile); Worksheet worksheet = wb.Worksheets[0]; XlsSlicerCollection slicers = worksheet.Slicers; XlsSlicer xlsSlicer = slicers[0]; xlsSlicer.Caption = "Name1"; wb.SaveToFile(outputFile, ExcelVersion.Version2013); |
Bug | SPIREXLS-1922 SPIREXLS-5641 |
Fixed the issue of missing slicers when converting Excel to PDF. |
Hotfix Version: 15.2.3
Category | ID | Description |
New feature | SPIREXLS-568 | Supports preserving the original format in the ExportDataTable() function.
ExportTableOptions op = new ExportTableOptions(); op.ExportColumnNames = true; op.KeepDataType = true; var r = sheet.Range["A1:M7"]; |
New feature | SPIREXLS-5539 | Supports the MUNIT function.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["C2"].Formula = "=MUNIT(5)"; workbook.Worksheets[0].Range["C8"].Formula = "=MUNIT(0)"; workbook.Worksheets[0].Range["A1"].Formula = "=FLOOR.PRECISE(3.2)"; workbook.Worksheets[0].Range["D1"].Formula = "CSC(-2)"; workbook.Worksheets[0].Range["A3"].Formula = "=IMCSCH(\"4 + 3i\")"; workbook.CalculateAllValue(); |
New feature | SPIREXLS-5540 | Supports the FLOOR function. |
New feature | SPIREXLS-5541 | Supports the PRECISE function. |
New feature | SPIREXLS-5681 | Supports the CSC function. |
New feature | SPIREXLS-5682 | Supports the IMCOSH function. |
New feature | SPIREXLS-5683 | Supports the IMSINH function. |
New feature | SPIREXLS-5684 | Supports the IMSECH function. |
Bug | SPIREXLS-5674 | Fixes the issue that document opening errors occurred when setting the language region to "Hungarian". |
Bug | SPIREXLS-5675 | Fixes the issue that Japanese characters were converted to English characters after updating the pivot table. |
Bug | SPIREXLS-5680 | Fixes the issue that the date format was inconsistent after converting a sheet to an image. |
Bug | SPIREXLS-5686 | Fixes the issue that black color was resulted when setting the sheet tab color to Color.Empty. |
Bug | SPIREXLS-5692 | Fixes the issue that the formula generated in German mode was incorrect. |
Bug | SPIREXLS-5708 | Fixes the issue that saving a shape to an image caused a NullReferenceException. |
Hotfix Version: 15.1.3
Category | ID | Description |
New feature | SPIREXLS-5542 | Supports the CSCH function |
New feature | SPIREXLS-5548 | Supports the RANDARRAY function. |
New feature | SPIREXLS-5621 | Supports the COTH function. |
New feature | SPIREXLS-5622 | Supports the SEQUENCE function. |
New feature | SPIREXLS-5627 | Supports the EXPAND function. |
New feature | SPIREXLS-5638 | Supports the CHOOSECOLS function. |
New feature | SPIREXLS-5639 | Supports the CHOOSEROWS function. |
New feature | SPIREXLS-5642 | Supports the DROP function. |
New feature | SPIREXLS-5656 | Support setting HyLink for XlsPrstGeomShape.
PrstGeomShapeCollection prstGeomShapeType = worksheet.PrstGeomShapes; for (int i = 0; i < prstGeomShapeType.Count; i++) { XlsPrstGeomShape shape = (XlsPrstGeomShape)prstGeomShapeType[i]; shape.HyLink.Address = "https://www.baidu.com/"; } |
Bug | SPIREXLS-5570 | Fixes the issue that the charts were lost when converting XLSM to PDF. |
Bug | SPIREXLS-5608 | Fixes the issue that the content was lost when converting Excel to PDF. |
Bug | SPIREXLS-5611 | Fixes the issue that setting ShowLeaderLines did not take effect. |
Bug | SPIREXLS-5612 | Fixes the issue that the data bar colors were incorrect when converting Excel to PDF. |
Bug | SPIREXLS-5625 SPIREXLS-5647 |
Fixes the issue that the values were incorrect after calling the CalculateAllValue() method to calculate formula values. |
Bug | SPIREXLS-5635 | Fixes the issue that setting the worksheet tab color to Color.Empty resulted in black. |
Bug | SPIREXLS-5640 | Fixes the issue that the images were extracted incorrectly. |
Bug | SPIREXLS-5657 | Fixes the issue that it failed to delete pivot fields in pivot tables. |
Bug | SPIREXLS-5659 | Fixes the issue that the text orientation in shapes was reversed when converting Excel to PDF. |
Hotfix Version: 14.12.2
Category | ID | Description |
New feature | SPIREXLS-5561 | Supports the SEC function. |
New feature | SPIREXLS-5562 | Supports the WRAPCOLS function. |
New feature | SPIREXLS-5563 | Supports the WRAPROWS function. |
New feature | SPIREXLS-5574 | Supports the VSTACK function. |
New feature | SPIREXLS-5577 | Supports the PERCENTOF function. |
New feature | SPIREXLS-5578 | Supports the REPTARRAY function. |
New feature | SPIREXLS-5592 | Support the SECH function. |
New feature | SPIREXLS-5607 | Supports the IMTAN function. |
New feature | SPIREXLS-5614 | Supports the IMCSC function. |
New feature | SPIREXLS-5615 | Supports the IMCOT function. |
New feature | SPIREXLS-5616 | Supports the IMSEC function. |
New feature | SPIREXLS-5623 | Supports the SUBSTITUTES function. |
Bug | SPIREXLS-5576 | Fixes the issue that the content was being shrunk when printing Excel documents using a dot matrix printer. |
Bug | SPIREXLS-5584 | Fixes the issue that the formatting was incorrect when converting Excel documents to PDF. |
Bug | SPIREXLS-5610 | Fixes the issue that the text position in legends was incorrect when converting Excel documents to PDF. |
Hotfix Version: 14.11.3
Category | ID | Description |
New feature | SPIREXLS-5469 SPIREXLS-5470 SPIREXLS-5546 SPIREXLS-5564 SPIREXLS-5565 |
Supports the new formulas including ACOT, ACOTH, COT, TOROW, TOCOL. |
New feature | SPIREXLS-5534 | Supports passing values to group pivot tables.
Workbook wb = new Workbook(); wb.LoadFromFile(inputFile); Worksheet pivotSheet = wb.Worksheets[0]; XlsPivotTable pivot = (XlsPivotTable)pivotSheet.PivotTables[0]; PivotField dateBaseField = pivot.PivotFields["number"] as PivotField; dateBaseField.CreateGroup(3000, 3800, 1); pivot.CalculateData(); wb.SaveToFile(outputFile); wb.Dispose(); |
Bug | SPIREXLS-3123 | Fixes the issue that the results were incorrect after compressing images. |
Bug | SPIREXLS-5056 | Fixes the issue that some content was hidden when converting Excel to images. |
Bug | SPIREXLS-5081 | Fixes the issue that the program threw an 'ArgumentOutOfRangeException' error while loading an Excel document. |
Bug | SPIREXLS-5120 | Fixes the issue that the image content was incorrect after loading and saving an Excel document. |
Bug | SPIREXLS-5177 | Fixes the issue that the chart height was incorrect when converting Excel to PDF. |
Bug | SPIREXLS-5364 | Fixes the issue that the effect was incorrect when using "Worksheet.AutoFitColumn()" method. |
Bug | SPIREXLS-5513 | Fixes the issue that the background color changed when saving xls to xlsx. |
Bug | SPIREXLS-5537 | Fixes the issue that the content was incorrect when converting Excel to PDF. |
Bug | SPIREXLS-5538 | Fixes the issue that the results were incorrect when replacing images in Excel. |
Bug | SPIREXLS-5543 | Fixes the issue that the content was incorrect when converting Chart to Image. |
Bug | SPIREXLS-5544 | Fixes the issue that the content was lost when printing Excel document. |
Bug | SPIREXLS-5545 | Fixes the issue that the results were incorrect when using VLOOKUP() formula. |
Bug | SPIREXLS-5554 | Fixes the issue that the content was incorrect when converting Excel to PDF. |
Hotfix Version: 14.10.2
Category | ID | Description |
New feature | SPIREXLS-5350 | MarkerDesigner now supports applying filter value parameters. |
New feature | SPIREXLS-5396 | ARRAYTOTEXT formula has been supported.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["A1"].Text = "True"; workbook.Worksheets[0].Range["A2"].Text = "1234.01234"; workbook.Worksheets[0].Range["A3"].Text = "Hello"; workbook.Worksheets[0].Range["B1"].Text = "#VALUE!"; workbook.Worksheets[0].Range["B2"].Text = "Seattle"; workbook.Worksheets[0].Range["B3"].Text = "$1,123.00"; workbook.Worksheets[0].Range["D1"].FormulaArray = "=ARRAYTOTEXT(A1:B4,0)"; workbook.Worksheets[0].Range["D3"].FormulaArray = "=ARRAYTOTEXT(A1:B4,1)"; workbook.SaveToFile(outputFile, ExcelVersion.Version2013); |
New feature | SPIREXLS-5471 | ARABIC formula has been supported.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["A1"].Value2 = "mcmxii"; workbook.Worksheets[0].Range["C1"].Formula = "=ARABIC(A1)"; workbook.Worksheets[0].Range["C2"].Formula = "=ARABIC(\"LVII\")"; workbook.Worksheets[0].Range["C3"].Formula = "=ARABIC(\"mcmxii\")"; workbook.Worksheets[0].Range["C4"].Formula = "=ARABIC(\"\")"; workbook.Worksheets[0].Range["C5"].Formula = "=ARABIC(\"-LVII\")"; workbook.Worksheets[0].Range["C6"].Formula = "=ARABIC(\"57\")"; workbook.Worksheets[0].Range["C7"].Formula = "=ARABIC(\"2024/10/15\")"; workbook.Worksheets[0].Range["C8"].Formula = "=ARABIC(\"Text\")"; |
New feature | SPIREXLS-5478 | BASE formula has been supported.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["A1"].Value2 = 7; workbook.Worksheets[0].Range["C1"].Formula = "=BASE(A1,2)"; workbook.Worksheets[0].Range["C2"].Formula = "=BASE(7,2)"; workbook.Worksheets[0].Range["C3"].Formula = "=BASE(100,16))"; workbook.Worksheets[0].Range["C4"].Formula = "=BASE(15,2,10)"; workbook.Worksheets[0].Range["C5"].Formula = "=BASE(Text,16))"; workbook.Worksheets[0].Range["C6"].Formula = "=BASE(-7,2)"; |
New feature | SPIREXLS-5479 | COMBINA formula has been supported.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["A1"].Value2 = 4; workbook.Worksheets[0].Range["C1"].Formula = "=COMBINA(A1,3)"; workbook.Worksheets[0].Range["C2"].Formula = "=COMBINA(4,3)"; workbook.Worksheets[0].Range["C3"].Formula = "=COMBINA(10,3)"; workbook.Worksheets[0].Range["C4"].Formula = "=COMBINA(3,10)"; workbook.Worksheets[0].Range["C5"].Formula = "=COMBINA(Text,16))"; |
New feature | SPIREXLS-5480 | XOR formula has been supported.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["A1"].Value2 = 3; workbook.Worksheets[0].Range["A2"].Value2 = 0; workbook.Worksheets[0].Range["C1"].Formula = "=XOR(A1>A2)"; workbook.Worksheets[0].Range["C2"].Formula = "=XOR(2>9)"; workbook.Worksheets[0].Range["C3"].Formula = "=XOR(3>0,2<9)"; workbook.Worksheets[0].Range["C4"].Formula = "=XOR(3>12,2<9)"; workbook.Worksheets[0].Range["C5"].Formula = "=XOR(3>12,2<9,4>6)"; workbook.Worksheets[0].Range["A6"].Value2 = 3>0; workbook.Worksheets[0].Range["C6"].Formula = "=XOR(A6)"; |
New feature | SPIREXLS-5482 | Supports embedding images into cells.
worksheet.Range["B1"].InsertOrUpdateCellImage("D:\\vs1.png",true); |
New feature | SPIREXLS-5521 | Supports getting a cell's NamedRange.
Workbook workbook = new Workbook(); workbook.LoadFromFile(inputFile); var result = workbook.Worksheets[0].Range["A1"].GetNamedRange(); System.Console.WriteLine(result); var result1 = workbook.Worksheets[0].Range["A2"].GetNamedRange(); System.Console.WriteLine(result1); File.WriteAllText(outputFile_T, result.ToString()+ "\r "); File.AppendAllText(outputFile_T, result1.ToString()+ "\r "); var result2 = workbook.Worksheets[0].Range["A3"].GetNamedRange(); if (result2 == null) { System.Console.WriteLine("null"); File.AppendAllText(outputFile_T, "null"); } |
Bug | SPIREXLS-2333 | Fixed an issue where the number of pages retrieved was incorrect. |
Bug | SPIREXLS-5287 | Fixed an issue with decimal points not being correct when exporting data under the .NET 6 framework. |
Bug | SPIREXLS-5347 | Fixed an issue where embedded images in cells were lost after converting Excel to PDF. |
Bug | SPIREXLS-5465 | Fixed an exception "Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')" when converting Excel to PDF. |
Bug | SPIREXLS-5481 | Fixed an issue where the calculation result of a formula was incorrect. |
Bug | SPIREXLS-5486 | Fixed an exception when converting Excel to PDF. |
Bug | SPIREXLS-5489 | Fixed an issue where an additional "@" character was inserted when adding formulas to cells, and the formula value was incorrect. |
Bug | SPIREXLS-5491 | Fixed an issue where deleting Sparklines failed. |
Bug | SPIREXLS-5532 | Fixed an issue where adding filters to pivot tables failed. |
Hotfix Version: 14.9.5
Category | ID | Description |
New feature | SPIREXLS-5255 | Supports adding filters to row fields/column fields of pivot tables.
XlsPivotTable pt1 = workbook.Worksheets["PivotTable_1"].PivotTables[0] as XlsPivotTable; pt1.RowFields[0].AddValueFilter(PivotValueFilterType.Between, pt1.DataFields[0], 100000, 1000000); pt1.ColumnFields[0].AddValueFilter(PivotValueFilterType.Between, pt1.DataFields[0], 100000, 1000000); pt1.CalculateData(); |
New feature | SPIREXLS-5393 | Supports the TEXTBEFORE formula.
workbook.Worksheets[0].Range["A1"].Formula = "=TEXTBEFORE(\"Red riding hood's, red hood\", \"hood\")"; |
New feature | SPIREXLS-5394 | Supports the TEXTSPLIT formula.
Supports the issue that the TEXTSPLIT formula is now available. workbook.Worksheets[0].Range["B2:D2"].FormulaArray = "=TEXTSPLIT(A2, \" \")"; |
New feature | SPIREXLS-5397 | Supports the TEXTAFTER formula.
workbook.Worksheets[0].Range["A3"].Formula = "=TEXTAFTER(\"Red riding hood’s, red hood\", \"\")"; |
Bug | SPIREXLS-5355 | Fixes the issue that the content is incorrect when converting Excel documents to images. |
Bug | SPIREXLS-5467 | Fixes the issue that an exception "System.InvalidCastException" is thrown when copying worksheets containing charts. |
Bug | SPIREXLS-5468 | Fixes the issue that there is a discrepancy in data after the decimal point when converting Excel documents to PDF. |
Hotfix Version: 14.9.1
Category | ID | Description |
New feature | SPIREXLS-5307 | Adds the 'OleObjectType.Msg' type to identify OLE objects in Msg format.
Workbook wb = new Workbook(); wb.LoadFromFile(inputFile); Worksheet sheet =wb.Worksheets[0]; OleObjectType type; if (sheet.HasOleObjects) { for (int i = 0; i < sheet.OleObjects.Count; i++) { var Object = sheet.OleObjects[i]; type = sheet.OleObjects[i].ObjectType; switch (type) { case OleObjectType.Msg: File.WriteAllBytes(outputFile_1, Object.OleData); break; ...... } } } |
New feature | SPIREXLS-5359 | Adds the 'workbook.ProhibitDtd = true' property to disable DTD processing.
Workbook workbook = new Workbook(); workbook.ProhibitDtd = true; workbook.LoadFromFile(inputFile); workbook.SaveToFile(outputFile, ExcelVersion.Version2013); workbook.Dispose(); |
New feature | SPIREXLS-5395 | Implements the support for the BAHTTEXT formula.
Workbook workbook = new Workbook(); workbook.Worksheets[0].Range["A3"].Value2 = 1234; workbook.Worksheets[0].Range["C3"].Formula = "=BAHTTEXT(A3)"; workbook.Worksheets[0].Range["A9"].Value = "1234"; workbook.Worksheets[0].Range["C9"].Formula = "=BAHTTEXT(A9)"; workbook.SaveToFile(outputFile, ExcelVersion.Version2013); workbook.Dispose(); |
Bug | SPIREXLS-5108 | Fixed the issue that the table borders were inconsistent in color after converting an Excel document to a picture. |
Bug | SPIREXLS-5280 | Fix the issue that the content was incorrect after converting an Excel document to a CSV document. |
Bug | SPIREXLS-5315 | Fix the issue that the order of setting different font styles for the contents of a cell affected the inconsistency of the results. |
Bug | SPIREXLS-5321 | Fix the issue that icons were lost after converting an Excel document to an HTML document. |
Bug | SPIREXLS-5332 | Fix the issue that the data in the pivot table was lost when converting an Excel document to a picture. |
Bug | SPIREXLS-5346 | Fix the issue that the result of data summing using MarkerDesigner function was incorrect. |
Bug | SPIREXLS-5360 | Fixed the issue that the program threw System.OutOfMemoryException when converting charts to pictures. |
Bug | SPIREXLS-5361 | Fixed the issue that the formatting was changed after saving as an XLSX document. |
Bug | SPIREXLS-5363 | Fixed the issue that the spacing between words became larger after converting an Excel document to a PDF document. |
Bug | SPIREXLS-5400 | Fix the issue that the text line breaks were incorrect after converting an Excel document to a PDF document. |
Hotfix Version: 14.8.2
Category | ID | Description |
New feature | SPIREXLS-5254 | Supports enabling revision mode.
Workbook.TrackedChanges=true;//default value is false |
New feature | SPIREXLS-5348 | Supports setting global custom font folders.
Workbook.SetGlobalCustomFontsFolders(string[] fontPath); |
Bug | SPIREXLS-5196 | Fixes the issue that the checkbox was not converted to image format when converting Excel to PDF. |
Bug | SPIREXLS-5305 | Fixes the issue that multiple calls to the ApplyStyleToRange method in pivot tables result in incorrect results. |
Bug | SPIREXLS-5308 | Fixes the issue that setting the color transparency of rich text did not take effect. |
Bug | SPIREXLS-5317 | Fixes the issue that the Filter formula is calculated incorrectly. |
Bug | SPIREXLS-5330 | Fixes the issue that pivot table column names are incorrect when converting Excel to images. |
Bug | SPIREXLS-5345 | Fixes the issue that the text location is incorrect when converting Excel to PDF. |
Bug | SPIREXLS-5349 | Fixes the issue that ChartSheet retrieval is incorrect. |
Bug | SPIREXLS-5352 | Fixes the issue that cell content is incorrect when converting Excel to HTML or images. |
Hotfix Version: 14.7.2
Request free customized demo just for you. |
Tab 1
Upload

Convert to
Tab 2
Tab 3
Tab 4
Mathematic Functions:
Calculate symbol : | Calculate Data: |
Logic Function:
Calculate symbol : | Calculate Data: |
Simple Expression:
Calculate symbol : | Calculate Data: |
MID Functions:
Text : | Start Number: |
Number Charts: |
Option:
Excel Version: |
Tab 5
Data
Option
Excel Version: |
If you don't find the function you want, please fill in a form to request a free demo from us. Make sure the demo you want meets the following requirements:
- It is a small project that implements a particular scenario.
- It relates to our libraries stored on E-iceblue online store.
- It costs less than 2 hours for us to complete it.
- It is not a bug report.
- It is not a feature request.