615
Excel Export via AJAX Call
posted

Hello,

I'm trying to use the following sample page to set up a simple Excel export:

http://www.igniteui.com/infragistics-excel/create-excel-worksheet

My goals are the following:

1) When the Export button is clicked, the current page should not have to be re-drawn.

2) The user shouldn't have to be redirected to another window to perform the export.

To achieve those goals, I set up a little ajax call like this when the Export button is pressed:

var grid= $("#igGrid").data("igGrid").dataSource.dataView();

$.ajax({
        type: "POST",
        url: "/Excel/ExcelExport",
        contentType: "application/json",
        data: JSON.stringify(grid)
    });

Everything works fine when the controller receives this post, but when it executes the SendForDownload() method in my controller, no download is actually triggered in the browser.  I suspect this is because of the nature of how ajax calls are interpreted by the browser.  My SendForDownload() method is almost identical to the sample:

private void SendForDownload(Workbook document, WorkbookFormat excelFormat)
        {
            string documentFileNameRoot;
            documentFileNameRoot = "Document.xlxs";

            Response.Clear();
            Response.AppendHeader("content-disposition", "attachment; filename=" + documentFileNameRoot);
            Response.ContentType = "application/octet-stream";
            document.SetCurrentFormat(excelFormat);
            document.Save(Response.OutputStream);
            Response.End();
        }

Am I going about this the right way?  I would really appreciate any advice from the support devs on how to achieve this functionality, whereby the user can simply click Export and see a download prompt appear without altering the state of the currently loaded page.

Thank you!