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>"); 
          
        }
  • 相关阅读:
    Datatables 在asp.net mvc
    VS Code开发调试.NET Core
    领域模型中的用户设计
    MVC数组模型绑定
    Java RMI(远程方法调用) 实例与分析 (转)
    oracle转mysql总结(转)
    Windows远程桌面连接Ubuntu 14.04 (转)
    oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)
    MySQL与Oracle的语法区别详细对比 (转)
    python购物淫秽数据分析(2)
  • 原文地址:https://www.cnblogs.com/taobox/p/2548139.html
Copyright © 2011-2022 走看看