zoukankan      html  css  js  c++  java
  • 上传Excel并高效将EXCEL导入数据库

    上传EXCEL文件到服务器

            if (FileUpload_excel.HasFile)
            {
                string excelFileName = FileUpload_excel.FileName;
                string fileExt = System.IO.Path.GetExtension(FileUpload_excel.FileName).ToLower();
    
                if (fileExt==".xls" || fileExt==".xlsx")
                {
                    try
                    {
                        string FileNewName = "Gtcs"+DateTime.Now.ToString("yyyyMMddHHmmssffff") + fileExt;
                        string FilePath = HttpContext.Current.Server.MapPath("./UploadFiles/");
                        this.FileUpload_excel.SaveAs(FilePath + FileNewName);
                        string FullPathName = FilePath + FileNewName;
    
                    }
                    catch (Exception ext)
                    {
                        
                    }
                }
    
            }

    根据EXCEL文件路径读取内容到DataSet

       //根据路径读取Excel到DataSet
       private DataSet ReadExcelFile(string FullPathName)
        {
            string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + FullPathName + ";Extended Properties=\"Excel 8.0; HDR=No; IMEX=1;\"";
            OleDbConnection conn = new OleDbConnection(strCon);
            string sql = "select F1 ,F2 ,F3 from [Sheet1$]";
            conn.Open();
            OleDbDataAdapter myCommand = new OleDbDataAdapter(sql, strCon);
            DataSet ds = new DataSet();
            myCommand.Fill(ds, "[Sheet1$]");
            conn.Close();
            return ds;
        }

    这就是重点了,高效将DataSet的内容写入到数据库中

                    using (System.Data.SqlClient.SqlBulkCopy SQLBC = new System.Data.SqlClient.SqlBulkCopy(connStr))
                    {
                        SQLBC.ColumnMappings.Add("F1", "db_F1");
                        SQLBC.ColumnMappings.Add("F2", "db_F2");
                        SQLBC.ColumnMappings.Add("F3", "db_F3");
                        SQLBC.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(SQLBC_SQLRowsCopide);
                        SQLBC.BatchSize = 10000;//每次传输的行数
                        SQLBC.NotifyAfter = 10000;//生成通知的行数
                        SQLBC.DestinationTableName = "excel_gtcsTemp";//目标表名
                        SQLBC.WriteToServer(ds.Tables[0]);
                    }
        private void SQLBC_SQLRowsCopide(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e)
        {
            //Response.Write("Rows:" + e.RowsCopied.ToString() + "<br>"); 
          
        }
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/taobox/p/2548139.html
Copyright © 2011-2022 走看看