如何使用MVC和EF Code First – 最佳实践写入Excel

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

我想要做的是使用我所有的dataModels在一起,并build立一个Excel文件,很好地格式化和所有的好东西 – 将某些数据放入特定的领域。 这些文件将是相当复杂的 – 添加和检查checkbox在Excel中,围绕其他格式的字段创build框

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

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

您需要使用类似EPPlus的库将您的Excel创build为byte[]Stream 。 然后你可以使用FileActionResult来服务这个:

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

使用这种方法,您可以提供一个dinamically创build的Excel文件。

更新:要创buildExcel文件,您可以使用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(); } }