在导入数据的过程中要做到高效快速,就要用到Excel表格.
首先要准备的是Excel表格数据模板,在项目里准备好模板
重置表单
$("#formImportExcel").resetForm();
禁用保存到数据库的按钮,这是为了防止未导入Excel数据表格的误点操作。$("#btnSaveImport").prop(“disabled”, true);
弹出模态框,下载模板
function downImportTemplate()
上传Excel表格,保存到临时表
避免取消选择文件后触发上传
if ($("#fileUploadExecl").val() == “” || $("#fileUploadExecl").val() == undefined) {return;}
显示加载层提交表单,启用保存到数据库的按钮,表格数据重载,清空table,保存导入的Excel表格数据到数据库
function saveImport()
导出数据到Excel表格
获取当前表格数据的筛选条件,指定需要导出的数据!
基本思路:
1、获取读取的文件;
2、把文件转换为二进制数组;
3、二进制数组转成内存流;
4、利用NPOI把内存流中的数据读取成Excel
首先要在控制器引用NPOI
把session中的ImportExcel移除避免残留以前数据
Session.Remove(“ImportExcel”);
判断页面传过来的文件是否为Excel表格,获取文件的后缀
string fileExtension = System.IO.Path.GetExtension(file.FileName);
声明二进制数组存放文件
byte[] fileBytes = new byte[file.ContentLength];
将传入的文件转化为二进制的数组存入fileBytes
file.InputStream.Read(fileBytes, 0, file.ContentLength)
将二进制的数组转化为内存流
MemoryStream excelFileStream = new MemoryStream(fileBytes);
将内存流转化为工作簿
NPOI.SS.UserModel.IWorkbook Workbook=newNPOI.HSSF.UserModel.HSSFWorkbook(excelFileStream);
判断工作簿中是否有工作表
if (workbook.NumberOfSheets > 0)
声明对象列表,存放导入的信息
List listStudentVo = new List();
获取第一个工作表
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
获取的是物理行数,也就是不包括那些空行(隔行)的情况。
PhysicalNumberOfRows
判断工作表中是否有数据
if (sheet.PhysicalNumberOfRows > 0)
将数据装到DataTable中,定义datatable
DataTable dtExcel = new DataTable();
获取标题行
NPOI.SS.UserModel.IRow rowHeader = sheet.GetRow(0);
获取表格列数
int cellCount = rowHeader.LastCellNum;
获取表格行数(最后一行下标+1)
int rowCount = sheet.LastRowNum + 1;
创建dataTable中的列,循环添加标题行中各个单元格的数据
for (int i = rowHeader.FirstCellNum; i < cellCount; i++)
遍历表头行中每一个单元格,获取标题行各个单元格的数据
DataColumn dtColumn = new DataColumn(rowHeader.GetCell(i).StringCellValue);
将获取到的标题行的数据放到dataTable中
dtExcel.Columns.Add(dtColumn);
读取Excel中的数据
(sheet.FirstRowNum) 第一行是标题
遍历excel中一行所有的单元格
新行添加到dataTable中
dtExcel.Rows.Add(dtRow);
遍历dataTable中的数据
foreach (DataRow row in dtExcel.Rows)
以上就是excel数据的导入。导入数据时会弹出如下页面:
首先也是创建Excel工作簿
HSSFWorkbook excelBook = new HSSFWorkbook();
创建工作表
NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet("**");
创建表头行
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
设置表头
row1.CreateCell(0).SetCellValue("**");
为Excel表格添加数据
for (int i=0;i< listStudent.Count();i++)
这里都跟导入差不多,创建行
NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i+1);
添加数据
rowTemp.CreateCell(0).SetCellValue(listStudent[i].StudentNumber);
然后呢?为Excel文件命名
string fileName = “考生信息” + DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”) + “.xls”;
转化为内存流
MemoryStream ExcelStream = new MemoryStream();
将Excel文件写入内存流
excelBook.Write(ExcelStream);
输出之前调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置
/eek(0,Seek.begin)
第一个参数表示相对位置,第二个参数表示参照位置
ExcelStream.Seek(0, SeekOrigin.Begin);
MIME文件类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
return File(ExcelStream, “application/vnd.ms-excel”, fileName);
以上就是excel数据的导出,导出相对简单,直接获取id里面的数据就可以了。