导入Excel表格

获取到导入考生的按键Id,写出它的点击事件,让它打开导入Excel表格的模态框.

代码如下:

function openImportExcel() {

重置表单(清空表单)

$("#formImportExcel").resetForm();

禁用保存到数据库的按钮(因为还没有数据,所以先禁用导入数据库的按钮,防止把空数据导入数据库)

$("#btnSaveImport").prop(“disabled”, true);

清空临时表(在导入Excel表格前,需要先把数据存放在临时表里,所以在导入数据前先要清空临时表)

tabStudentImport.reload({

url:"",

data: []

});

背景时不关闭动态模态框,按下esc时不关闭动态模态框

$("#modImportExaminee").modal({

backdrop: false,

keyboard: false

});

弹出模态框

$("#modImportExaminee").modal(“show”);

}

然后下载导入数据的模板.

function downImportTemplate() {

window.open(“DownImportTemplate”);

}

这里首先打开一个新的窗口,并在窗口中装载指定URL地址的网页.然后引用控制器的方法.

控制器的方法如下:

public ActionResult
DownImportTemplate()

{

获取模板路径

string filePath = Server.MapPath("~/Document/Template/考生信息导入模板.xls");

判断模板是否存在

if (System.IO.File.Exists(filePath))

{

//获取文件名称

string fileName = Path.GetFileName(filePath);

//返回文件

return File(new FileStream(filePath,FileMode.Open),
“application/octet-stream”,fileName);

}

else

{

return
Content(“模板文件不存在,请联系系统运维人员。”);

}

}

声明一个string的变量,然后获取到模板的路径,先作一个判断,判断出模板是否存在,

是,就继续获取到文件的名称,然后返回文件,把它返回到页面,让页面引用控制器的方法.否,就给出提示.

页面部分:

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

function upExcel() {

避免取消选择文件后触发上传

if ($("#fileUploadExecl").val()
== “” || $("#fileUploadExecl").val()
== undefined) {return; }

显示加载层

var layIndex = layer.load();

提交表单(这里同新增和修改一样使用到插件提交数据表单)

$("#formImportExcel").ajaxSubmit(function
(msg)

{

layer.close(layIndex);

if (msg.State) {

启用保存到数据库的按钮

$("#btnSaveImport").prop(“disabled”, false);

表格刷新

tabStudentImport.reload({

url: “SelectSessImportStudent”});

layer.alert(msg.Text, {icon:1,title:“提示”});

}

else {

清空table

tabStudentImport.reload({

url: ‘’,

data: []

});

layer.alert(msg.Text, { icon: 0, title: “提示” });

}

});

}

保存导入的数据到数据库

function
saveImport()

{

打开加载层

var
layIndex = layer.load();

请求保存导入的数据的url

$.post(“SaveImport”, function
(Msg) {

关闭加载层

layer.close(layIndex);

关闭模态框

$("#modImportExaminee").modal(“hide”);

输出

layer.alert(Msg, { icon: 0, title: “提示” });

刷新

searchTabStudent();

});}

控制器部分:

思路:

1、获取读取的文件;

2、把文件转换为二进制数组;

3、二进制数组转成内存流;

4、利用NPOI把内存流中的数据读取成Excel

获取文件的后缀

string fileExtension = System.IO.Path.GetExtension(file.FileName);

判断文件类型是否为指定的文件类型

if (".xls".Equals(fileExtension)||".XLS".Equals(fileExtension))
{

声明二进制数组存放文件

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);

最后经过多种判断后,把导入到Excel表格的数据导入到数据库中去.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值