Ok I was able to found a solution. So for anyone that is having the same issue as me, I went ahead and did it with iframe.
First you need to put this in your head content where is the button export is:
<%@ Page Title="Results Page" Language="VB" EnableEventValidation ="false" MasterPageFile="~/Blank.Master" AutoEventWireup="false" CodeFile="Results.aspx.vb" Inherits="Results" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
function ExportExcelProcess() {
// Create an iframe.
var iframe = document.createElement("iframe");
// Point the iframe to the location of
// the long running process.
iframe.src = "ExportExcel.aspx";
// Make the iframe invisible.
iframe.style.display = "none";
// Add the iframe to the DOM. The process
// will begin execution at this point.
document.body.appendChild(iframe);
}
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Table ID="Table1" runat="server" BorderStyle="None">
<asp:TableRow ID="TableRow11" runat="server">
<asp:TableCell>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="btnExport" Text="Export Excel" OnClientClick="ExportExcelProcess();" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:TableCell>
<asp:TableCell>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<div id="loader">
<img alt="" src="ajax-loader.gif" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</asp:Content>
and then you need to create a new page "ExportExcel.aspx" with all the code to create the excel file.
I hope this will help others.