• 上传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>"); 
          
        }
  • 相关阅读:
    Codeforces 358 D. Dima and Hares
    sublime Text3配置及快捷键、插件推荐总结
    免费WiFi,仅仅为好久没联系的你们
    史上最简单的带流控功能的http server
    微软2014校园招聘笔试试题
    python 3Des 加密
    MySQL slave状态之Seconds_Behind_Master
    APP安全环节缺失,手游运营商怎样应对APP破解困境
    读完了csapp(中文名:深入理解计算机系统)
    static使用方法小结
  • 原文地址:https://www.cnblogs.com/taobox/p/2548139.html
Copyright © 2020-2023  润新知