Articles in this section
Category / Section

Download Excel from Ajax call in ASP.NET

5 mins read

Syncfusion Excel (XlsIO) library is a .NET Excel library used to create, read, and edit Excel documents. Using this library, you can create and download an Excel from AJAX call in ASP.NET Web Forms.

Steps to create and download Excel from AJAX call programmatically:

Step 1: Create a new ASP.NET Web application project.

Create ASP.NET Web Forms application in Visual Studio

Create a new ASP.NET web application

Step 2: Install the Syncfusion.XlsIO.AspNet NuGet package as reference to your .NET Framework application from NuGet.org.

Add XlsIO reference to the project

Install NuGet package

Step 3: Add a new button in the Default.aspx and add AJAX call as shown below.

CSHTML

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
 
 <input type="button" onclick="exported()" value="Export"/>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script>
 
    function exported(e) {
        $.ajax({
            type: "POST",
            url: '/api/AjaxAPI/ExportExcel', //call your controller and action
            contentType: "application/json; charset=utf-8",
            dataType: "json",
        }).done(function () {
                //use window.location.href for redirect to download action for download the file
                window.location.href = '/api/AjaxAPI/Download';
        });
    }
    </script>
 
</asp:Content>

 

Step 4: Include the following namespace in newly added AjaxAPI.cs file.

C#

using Syncfusion.XlsIO;

 

VB.NET

Imports Syncfusion.XlsIO

 

Step 5: Include the below method ExportExcel() and Download() in AjaxAPI.cs, to create an Excel file and download it through AJAX call.

C#

[HttpPost]
// POST api/<controller>
public void ExportExcel()
{
   //save the file to server temp folder
   string fullPath = Path.Combine(HostingEnvironment.MapPath("~") + FileName);
            
   using (ExcelEngine excelEngine = new ExcelEngine())
   {
      IApplication application = excelEngine.Excel;
 
      //Create a workbook with a worksheet
      IWorkbook workbook = application.Workbooks.Create(1);
 
      //Insert sample text into cell “A1”
      workbook.Worksheets[0]["A1"].Text = "Hello World";
 
      workbook.Version = ExcelVersion.Excel2016;
 
      //Save the workbook 
      workbook.SaveAs(fullPath);
   }
}
[HttpGet]
public HttpResponseMessage Download()
{
   //get the temp folder and file path in server
   string fullPath = Path.Combine(HostingEnvironment.MapPath("~") + FileName);
   byte[] fileByteArray = System.IO.File.ReadAllBytes(fullPath);
   System.IO.File.Delete(fullPath);
   var stream = new MemoryStream(fileByteArray);
   var content = new HttpResponseMessage(HttpStatusCode.OK)
   {
      Content = new StreamContent(stream)
   };
   content.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");            
   return content;
}

 

VB.NET

<HttpPost>
Public Sub ExportExcel()
'save the file to server temp folder
   Dim fullPath As String = Path.Combine(HostingEnvironment.MapPath("~") & fileName)
 
   Using excelEngine As ExcelEngine = New ExcelEngine()
      Dim application As IApplication = excelEngine.Excel
 
      'Create a workbook with a worksheet
      Dim workbook As IWorkbook = application.Workbooks.Create(1)
 
      'Insert sample text into cell “A1”
      workbook.Worksheets(0)("A1").Text = "Hello World"
      workbook.Version = ExcelVersion.Excel2016
 
      'Save the workbook
      workbook.SaveAs(fullPath)
   End Using 
End Sub
<HttpGet>
Public Function Download() As HttpResponseMessage
   Dim fullPath As String = Path.Combine(HostingEnvironment.MapPath("~") & FileName)
   Dim fileByteArray As Byte() = System.IO.File.ReadAllBytes(fullPath)
        System.IO.File.Delete(fullPath)
   Dim stream = New MemoryStream(fileByteArray)
   Dim content = New HttpResponseMessage(HttpStatusCode.OK) With {
            .Content = New StreamContent(stream)
   }
   content.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
   Return content
End Function

 

A complete working example of how to create and download Excel from AJAX call in ASP.NET can be downloaded from Create Excel file.zip.

By executing the program, you will get the output Excel file as shown below.

Create Excel File

Output Excel document

Take a moment to peruse the documentation, where you can find basic worksheet data manipulation options along with features like Conditional Formatting, worksheet calculations through Formulas, adding Charts in worksheet or workbook, organizing and analyzing data through Tables and Pivot Tables, appending multiple records to worksheet using Template Markers, and most importantly PDF and Image conversions with code examples.

Refer here to explore the rich set of Syncfusion Excel (XlsIO) library features.

An online sample link to generate Excel file.

See Also:

How to download Excel from AJAX call in ASP.NET MVC?

How to create an Excel file in ASP.NET MVC?

How to create an Excel file in ASP.NET Core?

How to create an Excel file in ASP.NET Web Forms?

How to download the uploaded file in browser?

How to generate and display Excel files in thumbnail view?

Note:

Starting with v16.2.0.x, if you reference Syncfusion assemblies from trial setup or from the NuGet feed, include a license key in your projects. Refer the link to learn about generating and registering Syncfusion license key in your application to use the components without trail message.

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied