.NET C#使用ExcelPackage

时间:2016-10-24 21:14:57

标签: javascript c# asp.net excel excelpackage

我不确定我在这里失踪了什么。我点击了一个按钮,我使用javascript调用控制器。该控制器应创建一个excel文件并将其返回给用户,使其能够下载/保存文件。我尝试过几种不同的方法,但却无法让它发挥作用。这是我的javascript方面:

function exportList() {
    var val = $("#team-dropdown").val();
    const date = new Date().toISOString();
    const param = {
        "Date": date,
        "GroupID": 1
    }

    $.ajax({
        url: "@Url.Action("ExportToExcel", "Home")",
        type: "POST",
        data: param
    });
}

这是我的服务器端:

public FileResult ExportToExcel(DateTime date, int groupID)
        {
            Load l = new Load();
            List<Load> loadList = l.GetLoadsForGroup(date, groupID);

            var fileDownloadName = "fileName.xlsx";
            var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            ExcelPackage pck = new ExcelPackage();
            var ws = pck.Workbook.Worksheets.Add("New workbook");
            ws.View.ShowGridLines = true;
            ws.DefaultColWidth = 25;
            ws.Cells[1, 1].Value = "Order #";

            var currRow = 2;
            foreach (var load in loadList)
            {
                ws.Cells[2, 2].Value = load.LoadNumber;                    
            }



            var fs = new MemoryStream();
            pck.SaveAs(fs);
            fs.Position = 0;
            var fsr = new FileStreamResult(fs, contentType);
            fsr.FileDownloadName = fileDownloadName;
            return (fsr);
        }

不确定最好的方法是什么。如果有更好的方法,请随时详细说明。

1 个答案:

答案 0 :(得分:2)

你的方法看起来很好。在这种情况下,您只需使用html {"errors":[{"code":50,"text message":"User not found."}]} 发布而不是使用js函数。 或者,如果您想使用form,您可以写:

ActionResult

你得到与你的方法相同的结果。