session的作用就是:将用户数据保存在服务器端,使得用户能够访问到自己的数据而不会使得许多用户的数据混乱。如果想要将导入的Excel表格数据保存到session中,应该如何实现呢?
思路:
1、获取读取的文件;
2、把文件转换为二进制数组;
3、二进制数组转成内存流;
4、利用NPOI把内存流中的数据读取成Excel
把session中的ImportExcel移除避免残留以前数据
注:ImportExcel将导入的Excel表格的数据保存到session中;HttpPostedFileBase充当类的基类,这些类提供对客户端已上载的单独文件的访问
如上所示:首先判断页面传过来的文件是否为Excel表格,然后再获取文件的后缀
声明二进制数组存放文件
byte[] fileBytes = new byte[file.ContentLength];
将传入的文件转化为二进制的数组存入fileBytes file.InputStream.Read(fileBytes, 0, file.ContentLength);
将二进制的数组转化为内存流
MemoryStream excelFileStream = new MemoryStream(fileBytes);
将内存流转化为工作簿
NPOI.SS.UserModel.IWorkbook workbook = new
NPOI.HSSF.UserModel.HSSFWorkbook(excelFileStream);
注:GetExtension:返回指定路径字符串的扩展名;
Equals:确定此实例是否与另一个指定的数据类型对象具有相同的值;
ContentLength:在派生类重写时,获取上载文件的大小
然后判断工作簿中是否有工作表,根据查询出来的信息初始化工作表,并进行数据的分析和处理,读取Excel中的数据,将数据保存到session中
然后提取Session中的数据、并进行分页操作
注:OrderByDescending:根据键按降序对序列的元素进行排序
Skip:跳过序列中指定数量的元素。然后返回剩余的元素
Take:从序列的开头返回指定数量的连续元素