Asp.Net MVC5 使用NPIO导出Excel数据文件方法总结

 在系统开发过程中导出Excel功能是经常遇到的需求,我们知道在asp.net webform中很简单,采用Response.Write一个文件就可以了。但是在Asp.Net mvc有的人就不太清楚了,因为Asp.Net MVC和asp.net webform响应还是有一些区别的。今天我就总结一下Asp.Net MVC5 使用导出Excel数据文件方法。

一、项目准备

下载:NPOI 2.1.1

采用VS2013创建一个Asp.Net MVC5的项目。

有以下文件:

接下来为项目添加引用,最终的结果如下图:

视图部分Excel.cshtml:

 
  1. @{
  2. ViewBag.Title = "Excel";
  3. }
  4. <h2>Excel</h2>
  5. <p><a class="btn btn-default" href="@Url.Action("ExportToExcel")">导出Excel</a></p>

二、采通过表格的形式输出

 
  1. public ActionResult ExportToExcel()
  2. {
  3. var sbHtml = new StringBuilder();
  4. sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
  5. sbHtml.Append("<tr>");
  6. var lstTitle = new List<string> { "编号", "姓名", "年龄", "创建时间" };
  7. foreach (var item in lstTitle)
  8. {
  9. sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='25'>{0}</td>", item);
  10. }
  11. sbHtml.Append("</tr>");
  12. for (int i = 0; i < 100; i++)
  13. {
  14. sbHtml.Append("<tr>");
  15. sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", i);
  16. sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>屌丝{0}号</td>", i);
  17. sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", new Random().Next(20, 30) + i);
  18. sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", DateTime.Now);
  19. sbHtml.Append("</tr>");
  20. }
  21. sbHtml.Append("</table>");
  22. //第一种:使用FileContentResult
  23.      byte[] fileContents = Encoding.UTF8.GetBytes(sbHtml.ToString());
  24. return File(fileContents, "application/ms-excel", "fileContents.xls");
  25. //第二种:使用FileStreamResult
  26. //var fileStream = new MemoryStream(fileContents);
  27. //return File(fileStream, "application/ms-excel", "fileStream.xls");
  28. //第三种:使用FilePathResult
  29. //服务器上首先必须要有这个Excel文件,然会通过Server.MapPath获取路径返回.
  30. //var fileName = Server.MapPath("~/Files/fileName.xls");
  31. //return File(fileName, "application/ms-excel", "fileName.xls");
  32. }

三、采用NPIO方式

目一篇文章开源类库组件NPIO-.NET下的Excel利器--简介介绍了一下NPIO组件,下面我就看看NPIO在ASP.NET MVC5中导出Excel功能。

 
  1. public ActionResult ExportToExcel2()
  2. {
  3. NPOI.SS.UserModel.IWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook();
  4. NPOI.SS.UserModel.ICell cell;
  5. NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("StressTest");
  6. int i = 0;
  7. int rowLimit = 100;
  8. DateTime originalTime = DateTime.Now;
  9. for (i = 0; i < rowLimit; i++)
  10. {
  11. cell = sheet.CreateRow(i).CreateCell(0);
  12. cell.SetCellValue("值"+i.ToString());
  13. }
  14. using (MemoryStream ms = new MemoryStream())
  15. {
  16. workbook.Write(ms);
  17. var buffer = ms.GetBuffer();
  18. ms.Close();
  19. return File(buffer, "application/ms-excel","test.xlsx");
  20. }
  21. }
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值