使用NPOI实现导出表格的操作

最终结果如图:

(此次为实验,使用系统的模板页就好,使用a标签进行实验)

点击a标签后如图:

实验如下:

创建一个新的MVC项目后找到引用

1)添加引用
先右键点击引用,找到“管理NuGet程序包”


弹出后,点左上角浏览,再在输入框输入NPOI,点击面板上的安装


安装完成后进入控制器,引入命名空间

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

最终代码如下(自己复制到里面然后改成想要的数据就好):

1.前台代码(就一个a标签,其他的都是系统index模板页原本就有的)

<a href="~/home/toexcel">导出Excel表</a>

2.控制器代码:

/// <summary>/// 表头的样式/// </summary>/// <param name="workbook"></param>/// <param name="sheet"></param>public void CreateHeadStyle(HSSFWorkbook workbook, HSSFSheet sheet){string ClasstID = "1999班";//创建行HSSFRow row = sheet.CreateRow(0) as HSSFRow;//创建列var cell0 = row.CreateCell(0);var cell1 = row.CreateCell(1);var cell2 = row.CreateCell(2);cell0.SetCellValue("学生姓名");cell1.SetCellValue("学生学号");cell2.SetCellValue("性别");//创建列的样式HSSFCellStyle cstyle = workbook.CreateCellStyle() as HSSFCellStyle;//设置垂直居中cstyle.VerticalAlignment = VerticalAlignment.Center;//设置水平居中cstyle.Alignment = HorizontalAlignment.Center;//合并单元格sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 2, 0, 0));sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 2, 1, 1));sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 2, 2, 2));cell0.CellStyle = cstyle;cell1.CellStyle = cstyle;cell2.CellStyle = cstyle;var cell3 = row.CreateCell(3);cell3.SetCellValue(ClasstID);//班级IDcstyle = workbook.CreateCellStyle() as HSSFCellStyle;cstyle.VerticalAlignment = VerticalAlignment.Center;cstyle.Alignment = HorizontalAlignment.Center;sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 3, 6));cell3.CellStyle = cstyle;//---------------------创建行------------------------HSSFRow row1 = sheet.CreateRow(1) as HSSFRow;var cell4 = row1.CreateCell(3);var cell5 = row1.CreateCell(4);cell4.SetCellValue("民族");cell5.SetCellValue("政治面貌");cstyle = workbook.CreateCellStyle() as HSSFCellStyle;cstyle.VerticalAlignment = VerticalAlignment.Center;cstyle.Alignment = HorizontalAlignment.Center;sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1, 2, 3, 3));sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1, 2, 4, 4));cell4.CellStyle = cstyle;cell5.CellStyle = cstyle;var cell6 = row1.CreateCell(5);var cell7 = row1.CreateCell(6);cell6.SetCellValue("学生专业");cell7.SetCellValue("学生操行");cstyle = workbook.CreateCellStyle() as HSSFCellStyle;cstyle.VerticalAlignment = VerticalAlignment.Center;cstyle.Alignment = HorizontalAlignment.Center;sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1, 2, 5, 5));sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1, 2, 6, 6));cell6.CellStyle = cstyle;cell7.CellStyle = cstyle;}/// <summary>/// 导出excel表/// </summary>public void ToExcel(){string classname = "1999班";//创建一个Excel表HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.CreateSheet(classname+"操行表现") as HSSFSheet;CreateHeadStyle(workbook, sheet);Response.AddHeader("Content-Disposition", "attachment;filename=学生操行表现.xls");//这个是指点击导出后的文件名字LoveManagementDBEntities db = new LoveManagementDBEntities();//查询数据库//根据想要导出数据的学生做判断条件 意思是学生表学生的老师ID是1并且班级ID是3的学生才能被导出//因为是做测试 所以给个死值用于理解List<Student> elist = db.Student.Where(n=>n.TeacherID==1&&n.TbClassID==3).ToList();//遍历集合for (int i = 0; i < elist.Count; i++)//遍历符合条件的学生表数据{//创建行HSSFRow row = sheet.CreateRow(i + 3) as HSSFRow;//创建列row.CreateCell(0).SetCellValue(elist[i].StuName);row.CreateCell(1).SetCellValue(elist[i].StuNumber.ToString());row.CreateCell(2).SetCellValue(elist[i].StuSex.ToString());row.CreateCell(3).SetCellValue(elist[i].StuNation.ToString());row.CreateCell(4).SetCellValue(elist[i].StuPolStatus.ToString());row.CreateCell(5).SetCellValue(elist[i].Professional.ToString());row.CreateCell(6).SetCellValue(elist[i].STuGrade.ToString());}//内存流MemoryStream ms = new MemoryStream();workbook.Write(ms);Response.BinaryWrite(ms.ToArray());} 

期间遇到的问题(你们也肯定会遇到):由于本次是测试,所以导出表格除了学生信息表是动态的其他的数据都是给的死值所以暂时就没有什么问题。但是把这些放到项目中后就会多一些带值的变量进行判断,然后才进行导出,这时候问题就来了。

比如我在期间遇到的问题:如果要把视图的值传到控制器进行内容显示,那么就会出现导出表格的时候找不到那个值,提示那个变量的值为null,但明明调试的时候整个流程都走完了,也能找到那个变量并且进行输出,但一旦走完后就报错。这个问题也困扰了我好久,后面才发现是一个原因导致的:

因为ToExcel()这个东西也是一个页面,还记得上面的a标签的跳转页面

<a href="~/home/toexcel">导出Excel表</a>:因为点击之后他也会转到ToExcel的页面进行代码解析然后导出表格,这个时候问题就来了,因为在跳转前的确是有变量的值的,但是跳转之后就没有了,所以一直报null值错误。所以需要拼接好你要传输的值放到a标签中才行。

如下图:当鼠标悬浮到a标签的时候就要把对应的值传进去,才能导致正常运行

如有问题,可联系作者~

.NET MVC:实现导出Excel表格相关推荐

  1. 使用NPOI将数据库里信息导出Excel表格并提示用户下载

    使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 1 //mvc项目可以传多个id以逗号相隔的字符串2 public ActionRes ...

  2. elementui中有导出组件吗_Element-ui组件库Table表格导出Excel表格

    安装 npm install --save xlsx file-saver 两个插件的详细地址在下面 https://github.com/SheetJS/js-xlsx https://github ...

  3. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  4. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......

    PHP如何将查询出来的数据导出成excel表格(最好做... $objPHPExcel->getActiveSheet()->getDefaultColumnDimension(A)-&g ...

  5. java 导出excel教程_Java导出Excel表格

    Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包,该包在网上可以找到. 第一步,创建Excel对象. HSSFWorkbook workbook = new HSSFW ...

  6. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  7. 使用python将数据导出excel表格

      python可用于数据分析,有时候获得了数据需要导出以作其他作用.本文就介绍python导出excel表格的方法.   导出excel表格,python提供了两个库:xlwt,xlrd.本文只讨论 ...

  8. java代码实现导出Excel表格、工具ssm框架、maven、idea

    第一步.导入依赖 <!--生成excel文件--><dependency><groupId>org.apache.poi</groupId><ar ...

  9. java 浏览器 excel导出excel_使用Java导出Excel表格并由浏览器直接下载——基于POI框架...

    非异步方法 /** * 使用Java导出Excel表格并由浏览器直接下载--基于POI框架 * * @param response * @return * @throws IllegalAccessE ...

  10. Extjs 从grid中导出Excel表格。后台为C#(绝对好用)(按照自己的需求修改版本)...

    最近生成Excel表格,稍微得到一点新的体会,特此更新自己开发时候的版本. 开发工具:VS2005 数据库:oracle10.1 浏览器:firefox3.5.9 第一步,web层aspx文件 需要载 ...

最新文章

  1. Microsoft Platform SDK Febrary 2003更新vc6的SDK网址
  2. eclipse中svn插件的安装
  3. Self-Tuning Spectral Clustering论文阅读和代码理解
  4. 基于MATLAB的仿windows画图板功能的实现
  5. html5+开发window桌面图标,js模仿windows桌面图标排列算法具体实现(附图)
  6. docker安装教程(windows和linux[centos8])
  7. SAP 销售云支持的丰富的报表显示类型
  8. 【论文写作】本科、硕士研究生毕业论文格式问题
  9. win11快捷键失效怎么处理 Windows快捷键失效的解决方法
  10. linux应用编程之进程间同步
  11. 学习笔记 利用反射 手写一个简单的实体类 转json 的方法
  12. 利用计算机模拟,科学家试图利用计算机模拟整个宇宙的演化
  13. 2020-10-13 用JavaScript做的贪吃蛇小游戏
  14. python爬取 东方财富/天天基金网 基金排行数据
  15. 结构光的概念及其实现三维成像的主要原理
  16. vue中添加mp3音频文件
  17. 微信小程序—火车票查询
  18. 仿微信个人二维码切换样式
  19. 七牛云配置怎么配CDN
  20. shentou mianshiti

热门文章

  1. HFSS入门 T型波导模型优化
  2. Linux显卡驱动安装
  3. 【python】利用python计算A类不确定度
  4. 文章什么时候发布最有利于被搜索引擎收录?
  5. 快逸报表部署 (一)-- demo连接mysql数据库
  6. python网络安全工具箱界面,Python开发案例:设计启动工具箱,显示图形界面的方式...
  7. 数据结构 #考研#408
  8. @Register指令
  9. 真因数之和编程matlab,真因数
  10. Servlet session: 用session实现简单 购物车