如何使用MVC和EF代码优先写入Excel - 最佳实践

时间:2013-09-10 14:05:21

标签: asp.net-mvc excel entity-framework

Vs'12 asp.net C#MVC,互联网应用模板,Kendo UI,EF Code First

我想要做的是同时使用我的所有dataModels并构建一个Excel文件,格式良好且所有好东西 - 将某些数据放入某些字段。这些文件将相当复杂, - 添加和检查复选框在Excel中,围绕其他格式的字段创建框

现在我可以告诉他们将数据从HTML导出到excel,但这不是我想要的,我能想到的另一种方法是从C#运行controller代码通过class,然后使其可下载/和/或导出它?

这是“最佳实践”,如果不是,那是什么?

1 个答案:

答案 0 :(得分:2)

您需要使用像EPPlus这样的库将Excel创建为byte[]Stream。然后,您可以使用FileActionResult:

来提供此服务
public ActionResult CreateExcel()
{
    var data=_repository.GetExcelData();
    byte[] excel=CreateExcelAsByteArray(data);
    return File(excel, "application/vnd.ms-excel", "excel.xlsx");
}

使用此方法,您可以提供dinamically创建的Excel文件。

更新:要创建Excel文件,您可以使用EPPlus:

public byte[] CreateExcelAsByteArray(IEnumerable<int> elems)
{
    using(var ms=new MemoryStream())
    using(var package=new ExcelPackage())
    {
        var ws = package.Workbook.Worksheets.Add("worksheet");
        int i=1;
        foreach(var elem in elems)
        {
            ws.Cells("A"+i).Value=elem;
            i++;
        }
        package.SaveAs(ms);
        return ms.ToArray();
    }
}
相关问题