文献种类:专题技术文献;
开发工具与关键技术: 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();