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>"); 
          
        }
  • 相关阅读:
    C# 事务之SqlTransaction
    java获取字符串格式日期向前或向后n天的日期
    java中保留几位小数
    第一个androidAPP项目总结—ListView的上拉和下拉
    java中static作用详解
    第一个androidAPP项目总结—数据请求
    获取控件的高和宽
    Android学习笔记:如何设置ImageView中图片的显示方式
    TextView过长显示省略号, TextView文字中间加横线
    android中控件的使用
  • 原文地址:https://www.cnblogs.com/taobox/p/2548139.html
Copyright © 2011-2022 走看看