MVC导出数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015 C#
作者: 李杨
撰写时间:2019-06-05
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
导出Excel是经常用的,这里我们来介绍如何把table里面的数据导出到Excel里面
首先呢,我们经常将datatable或者list类型的数据分页展示在前端,然后我们经常也需要将这些数据导出到Excel里面,接着下来我们就来讲讲如何将这些数据导出到Excel里面。
目前的话常用的数据库导出到Excel的方法,是借助第三方的类库。比如POI和NPOI。
然后我们就要去控制器写方法,先写查询,之后条件筛选
如图:
然后接下来就是再去写导出Excel的具体方法
先创建一个Excel对象,
然后给Excel创建一个对象工作簿,
之后就是给sheet添加第一行的头部标题
如下大概是这个样子:
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet();
NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(0);
row1.CreateCell(0).SetCellValue("状态时间");
row1.CreateCell(1).SetCellValue("聚类包名称");
row1.CreateCell(2).SetCellValue("聚类类型名称");
row1.CreateCell(3).SetCellValue("客户数");
row1.CreateCell(4).SetCellValue("用户数");
row1.CreateCell(5).SetCellValue("本月收入");
row1.CreateCell(6).SetCellValue("上月收入");
row1.CreateCell(7).SetCellValue("流动客户");
row1.CreateCell(8).SetCellValue("未归属客户群");
row1.CreateCell(9).SetCellValue("营销经理");
然后这样创建好Excel的对象以后,我们就要去给每一行添加数据。
如下例子:
for (int i = 0; i < lisClusterIncome.Count(); i++){
NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 1);//给sheet添加一行 row.CreateCell(0).SetCellValue((DateTime)lisClusterIncome[i].ChangeTime);//状态时间
row.CreateCell(1).SetCellValue(lisClusterIncome[i].ClusterName);//聚类包名称
row.CreateCell(2).SetCellValue(lisClusterIncome[i].ClusterTypeName)聚类类型名称 row.CreateCell(3).SetCellValue((double)lisClusterIncome[i].CustomerNumber);//客户数 row.CreateCell(4).SetCellValue((double)lisClusterIncome[i].ThisMonthIncome);//用户数 row.CreateCell(5).SetCellValue((double)lisClusterIncome[i].ThisMonthIncome);//本月收入
row.CreateCell(6).SetCellValue((double)lisClusterIncome[i].LastMonthIncome);//上月收入 row.CreateCell(7).SetCellValue((double)lisClusterIncome[i].FlowCustomer);//流动客户 row.CreateCell(8).SetCellValue((double)lisClusterIncome[i].UnvestedClient);//未归属客群
row.CreateCell(9).SetCellValue(lisClusterIncome[i].ManagerName);//营销经理
}
然后接下来呢就要去写输出的文件名称
把Excel转化为数据流,然后输出
再去定义文件流
接着讲工作簿写入文件流中
之后就是调用Seek方法获取文件流的长度
最后就是返回文件类型,文件名称
如下图:
这样在控制器写好方法以后,我们就要去视图再去写导出方法
首先要调用页面的导出方法 ,然后去声明自定义的变量,
再去判断数据,弹出模态框。
如图:
然后点击导出按钮大的样子就是这个样子,再点击确定就可以导出了:
如图:
然后今天呢就讲到这里了。