1.新建MVC项目,新建控制器、视图

添加控制器:

添加视图(将使用布局页前面的复选框里的勾勾去掉)

2.在Models里新建一个类

 public class Shop{/// <summary>/// 编号/// </summary>public int Number { get; set; }/// <summary>/// 商品名称/// </summary>public string ShopName { get; set; }/// <summary>/// 商品价格/// </summary>public double Price { get; set; }/// <summary>/// 商品种类/// </summary>public string ShopType { get; set; }/// <summary>/// 时间/// </summary>public DateTime Date { get; set; }/// <summary>/// 添加数据/// </summary>/// <returns></returns>public List<Shop> AddShop(){var shops = new List<Shop>();shops.Add(new Shop() { Number = 1001, ShopName = "小熊饼干", Price = 9.9, ShopType = "零食", Date = DateTime.Now });shops.Add(new Shop() { Number = 1002, ShopName = "旺仔QQ糖", Price = 5.6, ShopType = "零食", Date = DateTime.Now });shops.Add(new Shop() { Number = 1001, ShopName = "奥利奥饼干", Price = 15.5, ShopType = "零食", Date = DateTime.Now });return shops;}}

3.在控制器里新增一个方法,编写导出的代码

   public FileResult ExportData(){Shop shop = new Shop();//获得数据var Data=shop.AddShop();//创建一个新的excel文件HSSFWorkbook book = new HSSFWorkbook();//创建一个工作区ISheet sheet = book.CreateSheet("sheet1");//创建一行 也就是在sheet1这个工作区创建一行 在NPOI中只有先创建才能后使用IRow row = sheet.CreateRow(0);for (int i = 0; i < 5; i++){//设置单元格的宽度sheet.SetColumnWidth(i, 16 * 156);}sheet.SetColumnWidth(4, 30 * 156);sheet.SetColumnWidth(1, 21 * 156);//定义一个样式,迎来设置样式属性ICellStyle setborder = book.CreateCellStyle();//设置单元格上下左右边框线 但是不包括最外面的一层setborder.BorderLeft = BorderStyle.Thin;setborder.BorderRight = BorderStyle.Thin;setborder.BorderBottom = BorderStyle.Thin;setborder.BorderTop = BorderStyle.Thin;//文字水平和垂直对齐方式setborder.VerticalAlignment = VerticalAlignment.Center;//垂直居中setborder.Alignment = HorizontalAlignment.Center;//水平居中setborder.WrapText = true;//自动换行//再定义一个样式,用来设置最上面标题行的样式ICellStyle setborderdeth = book.CreateCellStyle();//设置单元格上下左右边框线 但是不包括最外面的一层setborderdeth.BorderLeft = BorderStyle.Thin;setborderdeth.BorderRight = BorderStyle.Thin;setborderdeth.BorderBottom = BorderStyle.Thin;setborderdeth.BorderTop = BorderStyle.Thin;//定义一个字体样式IFont font = book.CreateFont();//将字体设为红色font.Color = IndexedColors.Red.Index;//font.FontHeightInPoints = 17;//将定义的font样式给到setborderdeth样式中
            setborderdeth.SetFont(font);//文字水平和垂直对齐方式setborderdeth.VerticalAlignment = VerticalAlignment.Center;//垂直居中setborderdeth.Alignment = HorizontalAlignment.Center;//水平居中setborderdeth.WrapText = true;  //自动换行//设置第一行单元格的高度为25row.HeightInPoints = 25;//设置单元格的值row.CreateCell(0).SetCellValue("编号");//将style属性给到这个单元格row.GetCell(0).CellStyle = setborderdeth;row.CreateCell(1).SetCellValue("商品名称");row.GetCell(1).CellStyle = setborderdeth;row.CreateCell(2).SetCellValue("商品价格");row.GetCell(2).CellStyle = setborderdeth;row.CreateCell(3).SetCellValue("商品种类");row.GetCell(3).CellStyle = setborderdeth;row.CreateCell(4).SetCellValue("日期");row.GetCell(4).CellStyle = setborderdeth;//循环的导出到excel的每一行for (int i = 0; i < Data.Count; i++){//每循环一次,就新增一行  索引从0开始 所以第一次循环CreateRow(1) 前面已经创建了标题行为0IRow row1 = sheet.CreateRow(i + 1);row1.HeightInPoints = 21;//给新加的这一行创建第一个单元格,并且给这第一个单元格设置值 以此类推...row1.CreateCell(0).SetCellValue(Convert.ToString(Data[i].Number));//先获取这一行的第一个单元格,再给其设置样式属性 以此类推...row1.GetCell(0).CellStyle = setborder;row1.CreateCell(1).SetCellValue(Data[i].ShopName);row1.GetCell(1).CellStyle = setborder;row1.CreateCell(2).SetCellValue(Convert.ToString(Data[i].Price));row1.GetCell(2).CellStyle = setborder;row1.CreateCell(3).SetCellValue(Data[i].ShopType);row1.GetCell(3).CellStyle = setborder;row1.CreateCell(4).SetCellValue(Convert.ToString(Data[i].Date));row1.GetCell(4).CellStyle = setborder;}System.IO.MemoryStream ms = new System.IO.MemoryStream();book.Write(ms);ms.Seek(0, SeekOrigin.Begin);DateTime dttime = DateTime.Now;string datetime = dttime.ToString("yyyy-MM-dd");string filename = "报表导出" + datetime + ".xls";return File(ms, "application/vns.ms-excel", filename);}

4.视图页引入脚本文件及编写相应代码

@{Layout = null;
}<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width" /><title>Index</title><link href="http://localhost:64014/bootstrap/css/bootstrap.min.css" rel="stylesheet" /><script src="http://localhost:64014/js/jquery-3.4.0.min.js"></script><script src="http://localhost:64014/bootstrap/js/bootstrap.min.js"></script><style type="text/css">* {margin: 0px;padding: 0px;}button {margin-top: 5px;margin-left: 5px;}</style><script type="text/javascript">function exports() {//用ajax调用导出方法
            $.ajax({type: 'GET',url: '/Export/ExportData',success: function () {//注:Ajax直接调用后台的下载方法是导出不了文件的,原因是ajax无法接收后台的文件流,所以,需要再次用window.location=url或者window.open(url)下载window.location = '/Export/ExportData'}})}</script>
</head>
<body><div>@*按钮用bootstrap渲染一下,会好看一些(*^_^*)*@<button class="btn btn-info" style="width:90px" οnclick="exports()">导出</button></div>
</body>
</html>

5.效果:

转载于:https://www.cnblogs.com/zhangnever/p/11074097.html

asp.net Mvc 使用NPOI导出Excel文件相关推荐

  1. Asp.Net MVC 关于npoi导出excel的方法

    导出的excel的是一个项目的基本功能    所以不多说  我们项目用的npoi     可以直接在vs的NuGet里面直接搜索下载 安装就可以用了 //创建一个excelHSSFWorkbook h ...

  2. Asp.Net MVC 使用FileResult导出Excel数据文件

    前几天一个MVC3.0项目做了一个Excel导出功能,今天来记录一下. 采取了最简单的方法. 用的是Html拼接成Table表格的方式,返回 FileResult 输出一个二进制的文件. 第一种:使用 ...

  3. C#使用NPOI导出Excel文件

    欢迎您成为我的读者,希望这篇文章能给你一些帮助. 前言 今天咱们一起来看看在C#中如何使用NPOI第三方控件进行数据的导出. 关于NPOI插件网上资料很多,大家感兴趣的可以去看看. 本文使用的版本是N ...

  4. ASP.NET MVC5 使用NPOI导出ExceL 返回浏览器下载

    一,什么是NPOI 该项目是位于http://poi.apache.org/的POI Java项目的.NET版本.POI是一个开源项目,可以帮助您读取/写入xls,doc,ppt文件.它有着广泛的应用 ...

  5. npoi的mvc怎么ajax导出,asp.net mvc利用NPOI导入导出Excel解决方法

    asp.net mvc利用NPOI导入导出Excel 导出Excel 2003没有问题,导出Excel2007老是出现无法访问已关闭的流,请帮忙解决,或是哪位有mvc导入导出excel的工具类能提供, ...

  6. asp.net中使用excel类导出Excel文件,并导出到web客户端中遇到的问题

    asp.net中使用excel类导出Excel文件,并导出到web客户端中遇到错误: 检索Com类工厂中CLSID为{000245-0000-0000-C000-000000000046}的组件失败, ...

  7. 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法...

    -----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...

  8. ASP.NET Core 导出Excel文件

    最近学了一个ASP.NET Core 导出Excel文件程序,在学习过程中遇到了不少的麻烦!为了让大家更明白的怎么用ASP.NET Core 导出Excel文件,我决定把我学到的东西分享出来! 首先我 ...

  9. asp.net中通过html格式导出excel文件

    //通过html格式生成导出excel文件,下载保存.   StreamExport(wgMdcStaff5, fileName, ToDataTable<MdcDrugProcureStock ...

最新文章

  1. mysql 创建库 5.7_MySQL数据库之MySQL5.7创建用户时报错
  2. 关于“中国大妈”的用户画像
  3. 在虚拟中开启Windows 8.1的Hyper-V平台
  4. 所谓的inference场景与深度学习终端加速器以及边缘计算和雾计算
  5. The Ransom of Red Chief
  6. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记
  7. Mysql报错 message from server: Host '61.148.245.96' is not allowed to connect to this MySQL server
  8. js中鼠标事件mouseover、mouseenter和mouseleave、mouseout的区别
  9. 常用数据分析方法总结
  10. 第一个微信小程序的诞生
  11. R730服务器内存扩展安装
  12. 函数指针的定义及使用
  13. 计算机主板供电故障,电脑主板内部电池供电出现问题,会出现哪些故障问题
  14. 【转载】CodeWarrior IDE使用Tips-如何编译生成和调用静态库
  15. guava-Primitives
  16. 店盈通带你看拼多多开店怎样让排名靠前?
  17. Linux红帽RHEL 7/8 系统重置root用户密码
  18. bitset c++ 用法
  19. ES DSL常用查询
  20. 开关电源芯片TOP264vg

热门文章

  1. ubuntu apt-mirror 同步源到本地
  2. 团队任务4-每日例会(2018-12-6)
  3. Learning ROS: Service and Client (C++)
  4. API通常的url语法
  5. mysql之触发器trigger
  6. Maximum Subarray with Sum/ Multiply
  7. java折半查找(正常的折半查找)
  8. 2012总结--第1篇--技术篇
  9. Oracle 查询基础
  10. LVS负载均衡群集部署之——NAT模式的介绍及搭建步骤