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             }