IronXL Get Started Blazor Read Excel File Blazor Read Excel File in C# Using IronXL (Example Tutorial) Chaknith Bin Updated:June 22, 2025 Introduction Blazor is an open-source .NET Web framework that was created by Microsoft. A Blazor application works by compiling the C# code into browser-compliant JavaScript and HTML. In this tutorial, I'll share knowledge about the best and easy method for reading Excel documents/worksheets in a Blazor server-side application using the IronXL C# library. How to Read Excel File in Blazor Install C# library to read Excel file in Blazor Create a File Upload button on your Blazor Application Use C# library to read Excel file from disk Configure Blazor app to display the read data in a table on the window Get started with IronXL Start using IronXL in your project today with a free trial. First Step: Start for Free Step 1 - Create a Blazor Project in Visual Studio I have an XLSX file containing the following data that I will read into and open in the Blazor Server App: Input XLSX Excel Sheet Result in Blazor Server Browser First name Last name ID John Applesmith 1 Richard Smith 2 Sherry Robins 3 Start off by creating a Blazor Project from the Visual Studio IDE: Choose the Blazor Server App Project type: Go ahead and run the Application without changing the solution with the F5 key. Navigate to the Fetch data tab of the Application like so: Our goal will be to load our Excel file into the Blazor app with an upload button and then display it on this page. Step 2 - Add IronXL to your Solution IronXL: .NET Excel Library (Installation Instructions): IronXL is a .NET library that allows you to treat the spreadsheet in Microsoft Excel like an object, enabling the developer to use the full power of C# and the .NET Framework to manipulate data streams. As a developer, we want a nice way through which we can get every row's cells and column information from Excel documents/worksheets into our applications or databases. With IronXL, it is possible to get all sorts of information from a worksheet such as cell values, content of cells, images, references, and formatting. IronXL is better than NPOI in many aspects. IronXL provides more functions and can make writing complex logic easier. It also has more preferable licenses and the support team is more competent. IronXL supports all the latest versions of .NET (8, 7, and 6) and .NET Core Framework 4.6.2+. Add IronXL to your solution using one of the methods below then build the solution. Option 2A - Use NuGet Package Manager Install-Package IronXL.Excel Option 2B - Add PackageReference in the csproj file You can add IronXL directly to your project by adding the following line to any <ItemGroup> in the .csproj file of your solution: <PackageReference Include="IronXL.Excel" Version="*" /> <PackageReference Include="IronXL.Excel" Version="*" /> XML As shown here in Visual Studio: Step 3 - Coding the File Upload and View In the Visual Studio Solution View, go to the Pages/ folder and find the FetchData.razor file. You may use any other razor file but we will use this one because it comes with the Blazor Server App Template. Replace the file contents with the following code: @using IronXL; @using System.Data; @page "/fetchdata" <PageTitle>Excel File Viewer</PageTitle> <h1>Open Excel File to View</h1> <InputFile OnChange="@OpenExcelFileFromDisk" /> <table> <thead> <tr> @foreach (DataColumn column in displayDataTable.Columns) { <th> @column.ColumnName </th> } </tr> </thead> <tbody> @foreach (DataRow row in displayDataTable.Rows) { <tr> @foreach (DataColumn column in displayDataTable.Columns) { <td> @row[column.ColumnName].ToString() </td> } </tr> } </tbody> </table> @code { // Create a DataTable instance private DataTable displayDataTable = new DataTable(); // This method is triggered when a file is uploaded async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e) { IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"; // Load the uploaded file into a MemoryStream MemoryStream ms = new MemoryStream(); await e.File.OpenReadStream().CopyToAsync(ms); ms.Position = 0; // Create an IronXL workbook from the MemoryStream WorkBook loadedWorkBook = WorkBook.FromStream(ms); WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet() // Add header Columns to the DataTable RangeRow headerRow = loadedWorkSheet.GetRow(0); for (int col = 0; col < loadedWorkSheet.ColumnCount; col++) { displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString()); } // Populate the DataTable with data from the Excel sheet for (int row = 1; row < loadedWorkSheet.RowCount; row++) { IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString()); displayDataTable.Rows.Add(excelRow.ToArray()); } } } @using IronXL; @using System.Data; @page "/fetchdata" <PageTitle>Excel File Viewer</PageTitle> <h1>Open Excel File to View</h1> <InputFile OnChange="@OpenExcelFileFromDisk" /> <table> <thead> <tr> @foreach (DataColumn column in displayDataTable.Columns) { <th> @column.ColumnName </th> } </tr> </thead> <tbody> @foreach (DataRow row in displayDataTable.Rows) { <tr> @foreach (DataColumn column in displayDataTable.Columns) { <td> @row[column.ColumnName].ToString() </td> } </tr> } </tbody> </table> @code { // Create a DataTable instance private DataTable displayDataTable = new DataTable(); // This method is triggered when a file is uploaded async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e) { IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"; // Load the uploaded file into a MemoryStream MemoryStream ms = new MemoryStream(); await e.File.OpenReadStream().CopyToAsync(ms); ms.Position = 0; // Create an IronXL workbook from the MemoryStream WorkBook loadedWorkBook = WorkBook.FromStream(ms); WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet() // Add header Columns to the DataTable RangeRow headerRow = loadedWorkSheet.GetRow(0); for (int col = 0; col < loadedWorkSheet.ColumnCount; col++) { displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString()); } // Populate the DataTable with data from the Excel sheet for (int row = 1; row < loadedWorkSheet.RowCount; row++) { IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString()); displayDataTable.Rows.Add(excelRow.ToArray()); } } } Private IronXL As [using] Private System As [using] 'INSTANT VB TODO TASK: Local functions are not converted by Instant VB: '@page "/fetchdata" (Of PageTitle) Excel File Viewer</PageTitle> (Of h1) Open Excel File @to View</h1> <InputFile OnChange="@OpenExcelFileFromDisk" /> (Of table) (Of thead) (Of tr) @foreach(DataColumn column in displayDataTable.Columns) ' { ' <th> @column.ColumnName </th> ' } 'INSTANT VB TODO TASK: Local functions are not converted by Instant VB: ' </tr> </thead> (Of tbody) @foreach(DataRow row in displayDataTable.Rows) ' { ' <tr> @foreach(DataColumn column in displayDataTable.Columns) ' { ' <td> @row[column.ColumnName].ToString() </td> ' } ' </tr> ' } 'INSTANT VB TODO TASK: Local functions are not converted by Instant VB: ' </tbody> </table> @code ' { ' ' Create a DataTable instance ' private DataTable displayDataTable = New DataTable(); ' ' ' This method is triggered when a file is uploaded ' async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e) ' { ' IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"; ' ' ' Load the uploaded file into a MemoryStream ' MemoryStream ms = New MemoryStream(); ' ' await e.File.OpenReadStream().CopyToAsync(ms); ' ms.Position = 0; ' ' ' Create an IronXL workbook from the MemoryStream ' WorkBook loadedWorkBook = WorkBook.FromStream(ms); ' WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; ' Or use .GetWorkSheet() ' ' ' Add header Columns to the DataTable ' RangeRow headerRow = loadedWorkSheet.GetRow(0); ' for (int col = 0; col < loadedWorkSheet.ColumnCount; col++) ' { ' displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString()); ' } ' ' ' Populate the DataTable with data from the Excel sheet ' for (int row = 1; row < loadedWorkSheet.RowCount; row++) ' { ' IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().@Select(c => c.ToString()); ' displayDataTable.Rows.Add(excelRow.ToArray()); ' } ' } '} $vbLabelText $csharpLabel Summary The <InputFile> component allows you to upload a file on this webpage. We have set the invoked event callback to call OpenExcelFileFromDisk, which is the async method in the @code block at the bottom. The HTML will render your Excel sheet as a table on the tab. IronXL.Excel is a standalone .NET software library for reading a wide variety of spreadsheet formats. It does not require Microsoft Excel to be installed, and is not dependent on Interop. Further Reading View the API Reference Explore the API Reference for IronXL, outlining the details of all of IronXL’s features, namespaces, classes, methods fields and enums. View the API Reference Download the software product. Frequently Asked Questions How can I read Excel files in a Blazor server-side application? To read Excel files in a Blazor server-side application, you can use the IronXL C# library. It allows you to easily integrate with your Blazor project by using NuGet Package Manager to install the library and then implementing code to read and display Excel data. What are the steps for setting up a Blazor project to read Excel files? First, install IronXL via NuGet Package Manager. Next, create a file upload button in your Blazor application. Use IronXL to read the uploaded Excel file and configure the app to display the data in a table using Razor components. Is it possible to read Excel files in a Blazor application without Excel installed? Yes, with IronXL, you can read and manipulate Excel files in a Blazor application without having Microsoft Excel installed on your system. How can I display Excel data in a Blazor application? After reading the Excel file using IronXL, you can use Razor components in your Blazor application to display the data in a table format, enhancing the user interface. What benefits does IronXL offer over other Excel libraries? IronXL provides extensive functionality, ease of handling complex logic, superior licensing terms, and dedicated support, making it a preferable choice over alternatives like NPOI. Which .NET versions are supported by IronXL for Excel manipulation? IronXL supports all the latest versions of .NET including 8, 7, and 6, as well as .NET Core Framework 4.6.2+, ensuring wide compatibility with modern applications. How do I integrate an Excel library into my Blazor project? You can integrate an Excel library like IronXL into your Blazor project by using the NuGet Package Manager with the command dotnet add package IronXL.Excel or by adding a PackageReference in the .csproj file. What troubleshooting steps can I take if my Blazor app fails to read an Excel file? Ensure that IronXL is correctly installed via NuGet and that your Blazor app has the necessary permissions to read files from disk. Double-check that the Excel file path is correct and that the file format is supported by IronXL. Chaknith Bin Chat with engineering team now Software Engineer Chaknith works on IronXL and IronBarcode. He has deep expertise in C# and .NET, helping improve the software and support customers. His insights from user interactions contribute to better products, documentation, and overall experience. Ready to Get Started? Free NuGet Download Total downloads: 1,546,387 View Licenses