使用OpenXML创建Excel不会打开文件

时间:2017-12-11 20:16:12

标签: c# ajax asp.net-mvc excel openxml

我正在使用OpenXML在我的MVC应用程序中创建Excel文档。就代码而言,我认为我正确地做了一切。

C#

public FileResult GetExcelReport()
{
    // Build dataset
    var excelStream = CreateSpreadsheet(data);
    return new FileStreamResult(excelStream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); 
}

internal MemoryStream CreateSpreadsheet(DataSet data)
{
    var stream = new MemoryStream();
    SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook);
    // do some stuff to make a spreadsheet

    ssDoc.Close();
    return stream;
}

JS

function createExcelReport(){
    $.ajax({
        url: "/Remote/GetExcelReport",
        type: "GET",
        dataType: "text",
        cache: false,
        data: {
            sData: // params for report
        },
        success: function(data){
            window.location.href = "/Page/Index"
        }, error: function(error){
        }
    });
}

我希望文件在浏览器中打开而不实际下载/保存。这个过程看起来很有效,但文件并没有打开。

如果我改变

SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook);

SpreadsheetDocument ssDoc = SpreadsheetDocument.Create("filename.xlsx", SpreadsheetDocumentType.Workbook);

(使用文件名而不是内存流),一切正常并保存到我的硬盘,但后来我必须导航到该位置才能打开文件。

关于我可能做错什么的任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:0)

为了它的价值,我解决了我的问题。我的AJAX没有对响应做任何事情,所以我使用@ Url.Action链接而不是AJAX调用 -

<a href="@Url.Action("GetExcelReport","Remote")">Report</a>