根据项目需要,需要对excel进行导入导出,所以选择NPOI,优点在这里就不详细介绍了,下面进入正题。
1 public int Import(string path) 2 { 3 IList<Student> list = new List<Student>(); 4 5 try 6 { 7 string strFileName = path; 8 using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read)) 9 { 10 11 IWorkbook workbook = WorkbookFactory.Create(file);////使用接口,自动识别excel2003/2007格式主要就是这句话 12 13 //获取所有的工作簿 14 for (int i = 0; i < workbook.NumberOfSheets; i++) 15 { 16 //获取所有的工作表 17 ISheet st = workbook.GetSheetAt(i); 18 19 //读取每一行 20 for (int k = 1; k < st.LastRowNum + 1; k++) 21 { 22 //获取当前行 23 IRow r = st.GetRow(k); 24 25 if (r != null) 26 { 27 28 if (r.GetCell(0) != null) 29 { 30 //if (r.GetCell(0).ToString().Length == 8)//验证考号是不是9位 31 //{ 32 MarkingSchool.Model.Student stu = new MarkingSchool.Model.Student(); 33 if (r.GetCell(0) != null) 34 { 35 stu.studentCode = r.GetCell(0).ToString(); 36 } 37 if (r.GetCell(1) != null) 38 { 39 stu.studentName = r.GetCell(1).ToString(); 40 41 } 42 if (r.GetCell(2) != null) stu.schoolCode = r.GetCell(2).ToString(); 43 if (r.GetCell(3) != null) stu.gradeCode = r.GetCell(3).ToString(); 44 if (r.GetCell(4) != null) stu.classesCode = r.GetCell(4).ToString(); 45 46 if (r.GetCell(5) != null) stu.period = r.GetCell(5).ToString(); 47 if (r.GetCell(6) != null) stu.nationChineseIdentifyCode = r.GetCell(6).ToString(); 48 if (r.GetCell(7) != null) stu.scienceOrArtIdentifyCode = r.GetCell(7).ToString(); 49 50 list.Add(stu); 51 //} 52 } 53 54 } 55 } 56 57 58 } 59 60 }
以上是同excel导入到list,Studnet为学生实体类 ,然后通过通过Student在导入数据库,
也可以通过Bulk Insert批量插入 。
Bulk Insert 简介:http://blog.chinaunix.net/uid-12427199-id-3413752.html
npoi官方最新下载地址:http://npoi.codeplex.com
Npoi 学习系列教程推荐:http://tonyqus.sinaapp.com