1 using (FileStream fs = File.OpenRead(@"D:\成绩管理\名单.xls"))
2 {
3 IWorkbook wk = new HSSFWorkbook(fs);//根据文件流创建workbook
4 if (wk.NumberOfSheets > 0)
5 {
6 ISheet sheet = wk.GetSheetAt(0);//创建工作表
7 //学号 姓名 性别 出生年月 专业
8 for (int r = 1; r <= sheet.LastRowNum; r++)//r=1,从第1行开始读取,而不是第0行,第0行是列名
9 {
10 #region 获取excel数据
11 IRow row = sheet.GetRow(r);
12 int stuid;
13 if (row.GetCell(0).CellType==CellType.BLANK)//主键stuid不允许空,若为空则跳过该行数据
14 {
15 continue;
16 }
17 else
18 {
19 stuid = (int)row.GetCell(0).NumericCellValue;
20 }
21 string name = row.GetCell(1) == null ? null : row.GetCell(1).StringCellValue;
22 string gender = row.GetCell(2)==null ? null: row.GetCell(2).StringCellValue;
23 string birth = row.GetCell(3) == null? null : row.GetCell(3).StringCellValue;
24 string specialty = row.GetCell(4)==null ? null : row.GetCell(4).StringCellValue;
25 #endregion
26
27 string sql = "insert into ceshi values(@stuid,@name,@birth,@gender,@specialty)";
28 SqlParameter[] para = new SqlParameter[]{
29 new SqlParameter("@stuid",stuid),
30 //空值在C#中是null,但通过sql语句向数据库中插入null值应为DBNull.Value
31 new SqlParameter("@name",name==null?DBNull.Value:(object)name),
32 new SqlParameter("@birth",birth==null?DBNull.Value:(object)birth),
33 new SqlParameter("@gender",gender==null?DBNull.Value:(object)gender),
34 new SqlParameter("@specialty",specialty==null?DBNull.Value:(object)specialty),
35 };
36 using (cmd = new SqlCommand(sql, GetConn()))
37 {
38 if (para!=null)
39 {
40 cmd.Parameters.AddRange(para);
41 }
42 cmd.ExecuteNonQuery();
43 }
44 }
45 MessageBox.Show("导入成功");
46 }
47 }