.Net中导入Excel文件到数据库

   /// <summary>
        /// 导入Excel文件到数据库
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ImportExcel(object sender, EventArgs e)
        {
            if (ImportFile.HasFile)
            {
                string fileName = ImportFile.ShortFileName;
                int i = fileName.LastIndexOf(".");
                string fileExt = fileName.Substring(i);
                if (fileExt.ToUpper().Equals(".XLS") || fileExt.ToUpper().Equals(".XLSX"))
                {
                    fileName = fileName.Replace(":", "_").Replace(" ", "_").Replace("\\", "_").Replace("/", "_");
                    fileName = DateTime.Now.Ticks.ToString() + "_" + fileName;

                    ImportFile.SaveAs(Server.MapPath("~/uploadTemp/" + fileName));
                    //转化为datatable
                    System.Data.DataTable excelTable = ExcelToDataTable(Server.MapPath("~/uploadTemp/" + fileName));
                    //导入数据库
                    InsertDataTableToDb(excelTable);
                    // 清空文件上传组件
                    ImportFile.Reset();
                    BindGrid_port();
                    System.IO.File.Delete(Server.MapPath("~/uploadTemp/" + fileName));
                }
                else
                {
                    Alert.Show("无效的文件类型!");
                    return;
                }


            }
        }


/// <summary>
        /// excel转换为datatable
        /// </summary>
        /// <param name="strExcelFileName"></param>
        /// <param name="strSheetName"></param>
        /// <returns></returns>
        public System.Data.DataTable ExcelToDataTable(string strExcelFileName)
        {
            string strSheetName;
            string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";

            DataSet ds = new DataSet();

            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                conn.Open();
                //自动获取第一个表名
                System.Data.DataTable _Table = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                strSheetName = _Table.Rows[0]["Table_Name"].ToString();

                string strExcel = string.Format("select * from [{0}]", strSheetName);

                OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
                adapter.Fill(ds, strSheetName);
                conn.Close();
            }

            return ds.Tables[strSheetName];
        }

        /// <summary>
        /// 将Datatable插入数据库
        /// </summary>
        /// <param name="table"></param>
        public void InsertDataTableToDb(System.Data.DataTable table)
        {
            if (table.Rows.Count == 0)
            {
                return;
            }
            else
            {
                saveFlag = true;
                //删除所有之前save的且没有submit数据
                // portTableApapter.DeleteQueryUnSaved(true, rowId, false);

                for (int i = 0; i < table.Rows.Count; i++)
                {
                    try
                    {
                        string PortName = table.Rows[i]["PortName"].ToString();
                        int BitHi = int.Parse(table.Rows[i]["BitHi"].ToString());
                        int BitLow = int.Parse(table.Rows[i]["BitLow"].ToString());
                        string Direction = table.Rows[i]["Direction"].ToString();
                        string GroupName = table.Rows[i]["GroupName"].ToString();
                        string AliasInGroup = table.Rows[i]["AliasInGroup"].ToString();
                        DateTime CreateDate = DateTime.Now;
                        int Width = BitHi - BitLow + 1;
                        portTableApapter.InsertQuery(PortName, Width, Direction, GroupName, AliasInGroup, false, CreateDate, BitHi, BitLow, false, false, 0, rowId);
                    }
                    catch
                    {
                        Alert.Show("Excel format is error");
                    }
                }
            }
        }


猜你喜欢

转载自blog.csdn.net/zhouy1989/article/details/27223497
今日推荐