[C#] 上传Excle表内容到数据库,用GridView显示出来 →→→→→进入此内容的聊天室

来自 , 2019-09-25, 写在 C#, 查看 144 次.
URL http://www.code666.cn/view/92f54963
  1. using System.IO;
  2. //判断是否上传文件,若上传,上传的文件是否存在、格式是否正确。fileupload1为FileUpload 控件ID
  3.     protected bool IsFileupload(FileUpload fileupload1, out string message, out string filepath)
  4.     {
  5.         if (fileupload1.HasFile) //判断该控件是否包含文件
  6.         {
  7.             string fullfilename = fileupload1.PostedFile.FileName;
  8.             string filename = fullfilename.Substring(fullfilename.LastIndexOf("\\") + 1);
  9.             string type = filename.Substring(filename.LastIndexOf('.') + 1); //截取文件名后缀
  10.             if (type.ToLower() == "xls")
  11.             {
  12.                 string basepath = this.Server.MapPath("~\\Temp\\教师信息"); //保存到文件夹
  13.                 string subpath = basepath + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + filename;   //修改上传文件名字,避免重复名称
  14.                 if (!File.Exists(subpath))
  15.                 {
  16.                     if (!Directory.Exists(Server.MapPath("~\\Temp")))
  17.                         Directory.CreateDirectory(basepath);
  18.                     if (!Directory.Exists(basepath))
  19.                         Directory.CreateDirectory(basepath);
  20.                     filepath = subpath;
  21.                     message = "";
  22.                     return true;
  23.                 }
  24.                 else
  25.                 {
  26.                     message = "您上传的文件已存在,请重命名后再上传!";
  27.                     filepath = "";
  28.                     return false;
  29.                 }
  30.             }
  31.             else
  32.             {
  33.                 message = "您上传的文件格式不正确!";
  34.                 filepath = "";
  35.                 return false;
  36.             }
  37.         }
  38.         else
  39.         {
  40.             message = "您未上传文件或上传的文件为空!";
  41.             filepath = "";
  42.             return false;
  43.         }
  44.     }
  45.  
  46. using NPOI.HSSF.UserModel;
  47. using NPOI.SS.UserModel;
  48. using System.Collections;
  49. //将Excel表中数据转换为DataSet 类型
  50.     public static DataSet ExcelToDatatable(string filepath)
  51.     {
  52.         HSSFWorkbook hssfworkbook = null;
  53.         using (FileStream file = new FileStream(filepath, FileMode.Open, FileAccess.Read))
  54.         {
  55.             hssfworkbook = new HSSFWorkbook(file);
  56.         }
  57.  
  58.         NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);
  59.         IEnumerator rows = sheet.GetRowEnumerator();
  60.         DataSet ds = new DataSet();
  61.         DataTable dt = new DataTable();
  62.         int rowIndex = 1;      
  63.         while (rows.MoveNext())
  64.         {
  65.             NPOI.SS.UserModel.IRow row = (NPOI.HSSF.UserModel.HSSFRow)rows.Current;
  66.             DataRow dr = null;
  67.  
  68.             if (rowIndex == 1)
  69.             {
  70.                 for (int i = 0; i < row.LastCellNum; i++)
  71.                 {
  72.                     ICell cell = row.GetCell(i);
  73.                     string value;
  74.                     if (cell == null)
  75.                         value = string.Empty;
  76.                     else
  77.                         value = cell.ToString();
  78.                     dt.Columns.Add(value);
  79.                 }
  80.                 if (dr != null)
  81.                     dt.Rows.Add(dr);
  82.             }
  83.             else
  84.             {
  85.                 for (int i = 0; i < row.LastCellNum; i++)
  86.                 {
  87.                     ICell cell = row.GetCell(i);
  88.                     string value;
  89.                     if (cell == null)
  90.                         value = string.Empty;
  91.                     else
  92.                         value = cell.ToString();
  93.                     if(dr == null)
  94.                         dr = dt.NewRow();
  95.                     dr[i] = value;
  96.                 }
  97.                 if (dr != null)
  98.                     dt.Rows.Add(dr);
  99.             }
  100.             rowIndex++;
  101.         }
  102.         ds.Tables.Add(dt);
  103.         return ds;
  104.     }
  105.  
  106. //导入按钮事件
  107.   protected void btn_users_Click(object sender, EventArgs e)
  108.     {
  109.         string message = "";
  110.         string filepath = "";
  111.         if (IsFileupload(FU_users, out message, out filepath))
  112.         {
  113.             FU_users.PostedFile.SaveAs(filepath);
  114.             DataSet ds = NPOITool.ExcelToDatatable(filepath);
  115.             if (ds != null && ds.Tables.Count > 0)
  116.             {
  117.                 try
  118.                 {
  119.                     // 数据有效性判断
  120.                        string error = "";//姓名是否为空\是否重复    
  121.                      List<string> namelist = new List<string>();
  122.                     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  123.                     {
  124.                         DataRow dr = ds.Tables[0].Rows[i];
  125.                         string name = dr[0].ToString();                        
  126.                         if (string.IsNullOrEmpty(name))
  127.                         {
  128.                             error += (i + 2).ToString() + ",";
  129.                         }
  130.                         if (namelist.Contains(name))
  131.                         {
  132.                             error += (i + 2).ToString() + ",";
  133.                         }
  134.                         else
  135.                             namelist.Add(name);                      
  136.                        }
  137.                        if (error == "")
  138.                        {
  139.                          //把数据添加到数据库
  140.                          }
  141.                     else
  142.                     {
  143.                         error = "以下行数姓名为空或重复:" + error.TrimEnd(',') + "\\n";
  144.                         ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script language= 'javascript'>alert('" + error + "')</script>");
  145.                         File.Delete(filepath);
  146.                     }
  147.                 }
  148.                 catch
  149.                 {
  150.                     ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script language= 'javascript'>alert('请按模板要求填写信息。')</script>");
  151.                     File.Delete(filepath);
  152.                 }
  153.             }
  154.             else
  155.             {
  156.                 ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script language= 'javascript'>alert('文件异常。')</script>");
  157.                 File.Delete(filepath);
  158.             }
  159.         }
  160.         else
  161.         {
  162.             ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script language= 'javascript'>alert('" + message + "')</script>");
  163.         }
  164.     }

回复 "上传Excle表内容到数据库,用GridView显示出来"

这儿你可以回复上面这条便签

captcha