MVC数据导出与导入

一、导出

    1、含义

        导出就是从数据库输出数据,并打印为Excel;主要是调用浏览器下载功能实现—下载形式为(Excel)

    2、导出方式有两种

方法一:自定义模板

1-创建工作簿

NPOI.HSSF.UserModel.HSSFWorkbook 自定名称 = new NPOI.HSSF.UserModel.HSSFWorkbook();

MVC数据导出与导入

2-创建工作表

2-1\NPOI.SS.UserModel.ISheet 自定名称= workbook.CreateSheet();

2-2\修改工作表名称

    (1). NPOI.SS.UserModel.ISheet 自定名称 = workbook.CreateSheet(工作表名称);

    (2). workbook.SetSheetName(第几个工作表, 工作表名称);

MVC数据导出与导入

3-设置表标题

3-1、创建行

    3.1-1. NPOI.SS.UserModel.IRow名= 工作表名称.CreateRow(第几);

MVC数据导出与导入

3-2、创建单元格

     NPOI.SS.UserModel.ICell 单元格名= rowTitle.CreateCell(0);

MVC数据导出与导入

3-3、单元格设置值

单元格名. SetCellValue();

MVC数据导出与导入

3-4、合并单元格

     自定工作表名称.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0(x), 0(y), 0(z), 0(h)));

MVC数据导出与导入

3-5、设置单元格样式

MVC数据导出与导入[1]

4、设置表头

4.1-创建一行 索引 1

MVC数据导出与导入

4.2-创建单元格 并设置值

MVC数据导出与导入

4.3-创建表头的样式

MVC数据导出与导入

5-遍历查询到的数据,设置表格数据

5.1-创建数据内部部分 单元格样式

MVC数据导出与导入

5.2-遍历数据,创建数据部分行列5.2.1-创建行5.2.2-创建列,并设置值5.2.3-给每个单元格添加样式

MVC数据导出与导入

6-设置列宽为自动适应

MVC数据导出与导入

7-把创建好的Excel输出到浏览器

MVC数据导出与导入

方法二:使用模板的方式导出Excel

1--读取模板

     //获取模板的文件路径

MVC数据导出与导入

       //判断文件是否存在

MVC数据导出与导入

2-使用NPOI打开模板Excel

//=2.1-使用文件打开模板文件

MVC数据导出与导入

//2.2-把文件流转为工作簿

MVC数据导出与导入

//==3-打开模板所在第一个工作表

MVC数据导出与导入

//==4-设置标题,如果筛选时间段不为空就拼接上筛选时间段

MVC数据导出与导入

//==5-往模板中填充数据

=5.1-设置数据单元格的样式

MVC数据导出与导入

//==5.2-开始填充数据

MVC数据导出与导入

6==以流的方式返回

MVC数据导出与导入

二、导入

1、含义

     就是让外部数据储存到数据库,主要是Excel数据储存到数据库;模板一般给定,并且一定要给定格式,否则容易出错;

2、思路:下载模板à在模板内写入需要导入的内容à转换成二进制数组à二进制数组转为内存流à内存流转为工作簿à数据保存到DataTable中à遍历datatable中的数据à保存数据到数据库

实现方法:

  1. 引用

MVC数据导出与导入

2.首先,从页面上转入控制器,在控制器获取并且判断是否存在模板,如存在就运行;不存在则提醒用户联系网站管理员;

MVC数据导出与导入

//====使用Open转入后台

MVC数据导出与导入

3.其次,从页面上获取到文件,并以FormData()方法返回给控制器

4.在控制器接收到页面上的文件,便把该文件转换成二进制数组

//声明一个和文件大小一致的二进制数组

byte[] fileBytes = new byte[传入文件.ContentLength];

//将上传的文件转成二进制数组

传入文件.InputStream.Read(fileBytes, 0, fileBytes.Length);

MVC数据导出与导入

5.二进制数组转为内存流

MemoryStream excelMemoryStream = new MemoryStream(fileBytes);

MVC数据导出与导入

6..内存流转为工作簿

NPOI.SS.UserModel.IWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(excelMemoryStream);

       7. 判断是否存在工作表并获取出第一个工作表

    MVC数据导出与导入

     8. 判断工作表中是否存在行并定义DataTable、获取Excel中的标题行,设置dataTable的列名

    MVC数据导出与导入

     9. 获取表格的列数

    10. 获取表格的行数

    11. 创建DateTable中的列

    12. 读取Excel中的数据

    13. 将一行的数据添加到Datatable

    (9,10,11,12,13代码如下)

MVC数据导出与导入

14.移除掉DataTable中的空行----移除空行需要封装一个方法

代码如下

MVC数据导出与导入

使用方法:removeEmptyRow(表格行)

       15. 定义存放容器à遍历datatable中的数据à添加到要保存的列表à添加到用于查重的列表à进行数据保存