winform導入excel到access數據庫中

        項目中用到了此功能。把大概做法跟大家共享下,希望對大家有所幫助。也給自己總結一下,激勵自己再接再厲。下面中部分代碼被漢字替換了,主要考慮到公司的產品權,希望諒解。

        /// <summary>
        /// 點擊打開按鈕
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpen_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "Excel文件(*.xls)|*.xls";
                //標題
                ofd.Title = "打開";
                //多選
                ofd.Multiselect = false;
                //默認值
                ofd.FilterIndex = 1;
                ofd.InitialDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    this.txtFilePath.Clear();
                    this.txtFilePath.Text = ofd.FileName;
                   
                }
            }
            catch(Exception ex)
            {
                //錯誤
                this.lblMsg.Text = ex.Message;
                return;
            }
        }

        /// <summary>
        /// 點擊導入按鈕
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnImp_Click(object sender, EventArgs e)
        {
            string filePath = this.txtFilePath.Text.Trim();
            if (filePath.Length == 0)
            {
                this.lblMsg.Text = "請選擇要導入數據的Excel文件!";
                return;
            }
            string fileType = filePath.Substring(filePath.LastIndexOf('.'));
            if (!fileType.Equals(".xls"))
            {
                this.lblMsg.Text = "導入文件類型爲Excel文件!";
                return;
            }
            //this.lblMsg.Text = "正在導入,請稍候...";//這個地方要用多線程,唉。。。
                FileImportNY();
        }
        /// <summary>
        /// 導入能源數據
        /// </summary>
        private void FileImportNY()
        {
            try
            {
                OleDbConnectionStringBuilder connectStringBuilder = new OleDbConnectionStringBuilder();
                connectStringBuilder.DataSource = this.txtFilePath.Text.Trim();
                connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";

                //HDR=NO沒有表頭;IMEX=1特殊格式處理
                connectStringBuilder.Add("Extended Properties", "Excel 8.0;HDR=No;IMEX=1");
                using (OleDbConnection connection = new OleDbConnection(connectStringBuilder.ConnectionString))
                {
                    DataSet ds = new DataSet();
                    string strSql = "select * from [sheet頁名稱$]";
                    OleDbCommand oleCmd = new OleDbCommand(strSql, connection);
                    connection.Open();
                    using (OleDbDataReader dataReader = oleCmd.ExecuteReader())
                    {
                        ds.Load(dataReader, LoadOption.OverwriteChanges, new string[] { "Sheet1" });
                        System.Data.DataTable dt = ds.Tables["Sheet1"];
                        if (dt.Rows.Count > 0)
                        {
                            string [] strColumn = new string[12];
                            for (int i = 2; i < dt.Rows.Count; i++)
                            {
                                for (int j = 0; j < 12;j++)
                                {
                                    //寫入數據庫數據
                                    strColumn[j] = dt.Rows[i][j].ToString();

                                }

                                //空行處理
                                bool isTrue = false;
                                for (int k = 0; k < strColumn.Length; k++)
                                {
                                    if (strColumn[k].ToString().Trim() != "")
                                    {
                                        isTrue = true;
                                        break;
                                    }
                                }
                                if (isTrue == false)
                                {
                                    continue;
                                }
                                string strColumn1 = strColumn[1].ToString().Trim();
                                if(strColumn1 == "")
                                {
                                    this.lblMsg.Text = "Excel文件中" + (i+1).ToString() + "行數據產品代碼不能爲空!";
                                    return;
                                }
                                //投入產出類型
                                string isTR = "";
                                string strColumn6 = strColumn[6].ToString().Trim();
                                if(strColumn6 == "投入")
                                {
                                    isTR = "1";
                                }
                                else if(strColumn6 == "產出")
                                {
                                    isTR = "2";
                                }
                                string strSF1 = "";
                                string strSF2 = "";
                                string strSF3 = "";
                                //是否輕收
                                string strColumn8 = strColumn[8].ToString().Trim();
                                if(strColumn8 == "否")
                                {
                                    strSF1 = "0";
                                }
                                else if(strColumn8 == "是")
                                {
                                    strSF1 = "1";
                                }
                                //是否高附
                                string strColumn9 = strColumn[9].ToString().Trim();
                                if(strColumn9 == "否")
                                {
                                    strSF2 = "0";
                                }
                                else if(strColumn9 == "是")
                                {
                                    strSF2 = "1";
                                }
                                //是否綜合商品
                                string strColumn10 = strColumn[10].ToString().Trim();
                                if(strColumn10 == "否")
                                {
                                    strSF3 = "0";
                                }
                                else if(strColumn8 == "是")
                                {
                                    strSF3 = "1";
                                }

                                 //判斷數據庫中是否已經存在這條數據
                                string strCount = ExecuteSQL("select count(*) from 導入表 where 唯一鍵 = '" + strColumn[1].ToString().Trim() + "'").ToString();
                                string strSqlExc = "";
                                if(strCount == "0")
                                {

                                    //insert
                                    strSqlExc = "insert";
                                }
                                else
                                {

                                    //update
                                    strSqlExc = "update";
                                }

                                 //執行SQL
                                string strTS = ExecuteSQL(strSqlExc);
                                if (strTS != "")
                                {
                                    this.lblMsg.Text = strTS;
                                    return;
                                }
                            }
                            this.lblMsg.Text = "數據導入成功!";
                        }
                        else
                        {
                            this.lblMsg.Text = "導入數據失敗!";
                        }
                    }
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                this.lblMsg.Text = ex.Message.ToString();
                return;
            }
            finally
            {
               
            }
            //刷新
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章