数据导入

文献种类:专题技术文献;
开发工具与关键技术: Visual Studio
作者: 吴新洋 ;年级: 1801 ;撰写时间: 2019 年 5 月 2 日
文献编号: 归档时间: 年 月 日
数据导入
开发工具与关键技术:Visual Studio
作者:吴新洋
撰写时间:2019年05月2日

确保Excel中标题行的名称和表单中与之对应的字段的标题一致,并且表单中字段名称不能相同。以及Excel中数据的格式要正确,序号无法导入。

//弹出导入Excel的模态框
function openImportExcel() {
重置表单
$("#formImportExcel").resetForm();
禁用保存到数据库的按钮
$("#btnSaveImport").prop(“disabled”, true);
清空临时表
tabStudentImport.reload({
url: “”,
data: []
});
点击背景时不关闭动态模态框,按下esc时不关闭动态模态框
$("#modImportExaminee").modal({
backdrop: false,
keyboard: false
});
弹出模态框
$("#modImportExaminee").modal(“show”);
}

在这里插入图片描述
下载模板
function downImportTemplate() {
打开一个新的窗口,并在窗口中装载指定URL地址的网页
window.open(“DownImportTemplate”);
}

    上传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{

                tabStudentImport.reload({
                    url: '',
                    data: []
                });layer.alert(Msg.Text, { icon: 0, title: "提示" });
           }  });   }

在这里插入图片描述
第一步下载模板
1.获取模板路径string filePath = Server.MapPath("~/Document/Template/考生模板.xls");
2.判断模板是否存在 (System.IO.File.Exists(filePath))
3.获取模板名称 string fileName = Path.GetFileName(filePath)
4.返回文件 return File(new FileStream(filePath, FileMode.Open), “application/octet-stream”, fileName);
导入的Excel表格的数据保存到session
1.判断页面传过来的文件是否为Excel表格 string fileExtension = System.IO.Path.GetExtension(file.FileName);/
2.获取文件的后缀 (".xls".Equals(fileExtension) || “.XLS”.Equals(fileExtension))
3.声明二进制数组存放文件 byte[] fileBytes = new byte[file.ContentLength];
4.将传入的文件转化为二进制的数组存入fileBytes4 file.InputStream.Read(fileBytes, 0, file.ContentLength);
5将二进制的数组转化为内存流MemoryStream excelFileStream = new MemoryStream(fileBytes);
6.将内存流转化为工作簿NPOI.SS.UserModel.IWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(excelFileStream);
7.判断工作簿中是否有工作表(workbook.NumberOfSheets > 0)
8.查询出 学院,专业,年级,班级 的信息:用来根据名称获取对应的ID
9.声明对象列表,存放导入的学生信息 List listStudentVo = new List();
10.获取第一个工作表 NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
11.工作表中是否有数据 (sheet.PhysicalNumberOfRows > 0)
12.将数据装到DataTable中DataTable dtExcel = new DataTable();
13.获取标题行NPOI.SS.UserModel.IRow rowHeader = sheet.GetRow(0);
获取表格列数int cellCount = rowHeader.LastCellNum;
14.获取表格行数(最后一行下标+1) int rowCount = sheet.LastRowNum + 1;
15.创建dataTable中的列,循环添加标题行中各个单元格的数据
(int i = rowHeader.FirstCellNum; i < cellCount; i++)
16.遍历表头行中每一个单元格,获取标题行各个单元格的数据
17.将获取到的标题行的数据放到dataTable中
18.将数据保存到session中
Session[“ImportExcel”] = listStudentVo;
returnJson.State = true;
returnJson.Text = “Excel表格中一共有” + dtExcel.Rows.Count + "条数据,其"ImportSuccess + “条匹配成功,有” + ImportFail + “条匹配失败!”;
 提取Session中的数据、并进行分页操作
List listStudentVo = new List();
if (Session[“ImportExcel”]!=null) {
listStudentVo = Session[“ImportExcel”] as List;
计算数据总条数int totalRow = listStudentVo.Count();
实例化LayuiTableData layuiTableData = new LayuiTableData();
layuiTableData.count = totalRow; layuiTableData.data = listStu;
保存到数据库
1.记录保存成功的数据条数int successCount = 0;
2.记录因于数据库已有数据重复而保存失败的数据条数int oldCount = 0;
3.判断数据是否与数据库中已有数据重复
int countStudent = (from tbStudent in myModels.PW_Student
where tbStudent.StudentIDNum == student.StudentIDNum ||
tbStudent.StudentNumber == student.StudentNumber
select tbStudent).Count();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值