簡體   English   中英

ASP.Net MVC中帶有OfficeOpenXml的新Excel文件:未返回任何內容

[英]New Excel file with OfficeOpenXml in ASP.Net MVC : nothing is returned

語境

我用OfficeOpenXml創建了一個Excel文件,但是沒有返回瀏覽器。

知道為什么嗎?

[C#] :

public ActionResult ExportToExcel(string[] mails)
{
    using (var ep = new ExcelPackage())
    {
        var ws = ep.Workbook.Worksheets.Add("Contacts");

        for (var i = 0; i < mails.Length; i++)
        {
            ws.Cells[i + 1, 1].Value = mails[i];
        }

        Byte[] bytes = ep.GetAsByteArray();

        return new FileContentResult(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "Contacts.xls" };
    }
}

[JavaScript]:

$('#contacts-excel-btn').click(function () {
    var mails = [],
        uniqueMails = [];

    $('.email-td').each(function () {
        var txt = $(this).text();
        if (txt) {
            mails.push(txt);
        }
    });

    $.each(mails, function (i, el) {
        if ($.inArray(el, uniqueMails) === -1) {
            uniqueMails.push(el);
        }
    });

    if (uniqueMails[0]) {
        $.ajax({
            type: 'POST',
            url: '/Contact/ExportToExcel',
            dataType: 'json',
            traditional: true,
            data: { mails: uniqueMails }
        });
    }
});

好的,我解決了我的問題。

根據本文的介紹 ,我將return替換為:

var butes = ep.GetAsByteArray();
var fileName = "Contacts.xlsx";

return base.File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);

根據本文 ,我用html表單方法替換了我的ajax方法:

[JS]:

$.each(uniqueMails, function (i, el) {
    $('#contacts-excel-form').append('<input type="hidden" name="mails[' + i + ']" value="' + el + '" />');
});

$('#contacts-excel-form').submit();

[C#] :

var mails = Request.Form.AllKeys;

for (var i = 0; i < mails.Length; i++)
{
    ws.Cells[i + 1, 1].Value = Request.Form[mails[i]];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM