MVC导入Excel表格数据

MVC导入Excel表格数据

开发工具与关键技术:VisualStudio

作者:邹贺汗

撰写时间:2019.4.17

导入Excel表格首先要设置div,让这个div以弹窗的方式呈现, 用这个div来装table标签然后设置table的ID,用来装导入的Excel数据,这里我用了个插件是layui插件,用layui设置表头,配置分页,让表单初始化为空,让他打开的时候没有数据,等选中了文件在显示文件的内容就可以了,

设置div弹窗点击背景和esc的时候都不关闭动态模态框,

$("#modImportExaminee").modal({

backdrop:false,

Keyboard:false

});

上传Excel表格,保存到临时表

Js判断是否选中文件,如果选中重载表格数据到自己定义的路径去,没有则清除table。

控制器将导入的的Excel表格的数据保存到session,

首先声明一个类ReturnJson,设置状态、状态码、文本、附加数据,

充当类的基类,这些类提供对客户端已上载的单独文件的访问HttpPostedFileBase,参数名设置为和页面设置input的name一致,判断页面传过来的文件是否为Excel表格。

获取文件的后缀。如图:

MVC导入Excel表格数据_第1张图片
然后判断工作簿中是否有工作表,声明一个对象列表,存放导入的数据信息。获取第一个工作表,PhysicalNumberOfRows 获取的是物理行数,也就是不包括那些空行(隔行)的情况。判断工作表中是否有数据。

NPOI.SS.UserModel.ISheet sheet =workbook.GetSheetAt(0);

if (sheet.PhysicalNumberOfRows> 0)

然后将数据装到DataTable中,定义datatable。

DataTable dtExcel = newDataTable();

获取标题行

NPOI.SS.UserModel.IRow rowHeader =sheet.GetRow(0);

获取表格列数,获取表格行数(最后一行下标+1),创建dataTable中的列,循环添加标题行中各个单元格的数据,遍历表头行中每一个单元格,获取标题行各个单元格的数据

int cellCount =rowHeader.LastCellNum;

int rowCount = sheet.LastRowNum +1;

for (int i =rowHeader.FirstCellNum; i < cellCount; i++)

{

 DataColumn dtColumn = newDataColumn(rowHeader.GetCell(i).StringCellValue);

 将获取到的标题行的数据放到dataTable中

 dtExcel.Columns.Add(dtColumn);

 }

读取Excel中的数据,(sheet.FirstRowNum) 第一行是标题。

for (int i = sheet.FirstRowNum +1; i < rowCount; i++)

{

//获取行(1、2、3...)数据

NPOI.SS.UserModel.IRow row =sheet.GetRow(i);

//创建DataTable行

DataRow dtRow = dtExcel.NewRow();

if (row != null)

{

//遍历excel中一行所有的单元格

for (int j = row.FirstCellNum; j< cellCount; j++)

 {

if (row.GetCell(j) != null)

{

dtRow[j] = row.GetCell(j).ToString();

}

}

}

//新行添加到dataTable中

dtExcel.Rows.Add(dtRow);

}

//将每一条数据都添加到对象列表中

listStudentVo.Add(student);

ImportSuccess++;

}

你可能感兴趣的:(ASP.NET,MVC)