C#中實現excel文件批量導入access數據表中


一 、界面簡單設計如下:

二 、代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;


namespace Data1
{
    public partial class Excel_Info : Form
    {

        //設置數據庫路徑
        private string accessFilePath = AccessDAO.Property.accessFilePath;

        public Excel_Info()
        {
            InitializeComponent();
        }
        //調用界面美化工具IirsSkin對界面進行美化
        private void Excel_Info_Load(object sender, EventArgs e)
        {     
            this.skinEngine1.SkinFile = "MSN.ssk";
        }

        //退出
        private void bnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //瀏覽相應excel文件
        private void bnBrouse_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "Excel文件(*.xls)|*.xls";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string filePath = dlg.FileName;
                this.textBox1.Text = filePath;
            }
        }

        //導入access數據庫中
        private void bnImport_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length == 0)
            {
                MessageBox.Show("請選擇導入數據的Execl文件", "提示");
            }
            //轉換類別未選擇的時候
            else if (raSend.Checked == false && raReceive.Checked == false && raRelation.Checked == false)
            {
                MessageBox.Show("請選擇轉換類別","提示");
            }
            #region excel導入到.mdb發包方表中
            if (raSend.Checked == true)
            {
                try
                {
                    OleDbConnectionStringBuilder connectStringBuilder = new OleDbConnectionStringBuilder();
                    connectStringBuilder.DataSource = this.textBox1.Text.Trim();
                    connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connectStringBuilder.Add("Extended Properties", "Excel 8.0");
                    using (OleDbConnection cn = new OleDbConnection(connectStringBuilder.ConnectionString))
                    {
                        DataSet ds = new DataSet();
                        string sql = "Select * from [fbf$]";
                        OleDbCommand cmdLiming = new OleDbCommand(sql, cn);
                        cn.Open();
                        using (OleDbDataReader drLiming = cmdLiming.ExecuteReader())
                        {
                            ds.Load(drLiming, LoadOption.OverwriteChanges, new string[] { "fbf" });
                            DataTable dt = ds.Tables["fbf"];
                            if (dt.Rows.Count > 0)
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    //寫入數據庫數據
                                    string MySql = "insert into FBF(FBFBM,FBFMC,FBFFZRXM,FZRZJLX,FZRZJHM,LXDH,FBFDZ,YZBM,FBFDCY,FBFDCRQ,FBFDCJS) values('" + dt.Rows[i]["發包方編碼"].ToString()
                                        + "','" + dt.Rows[i]["發包方名稱"].ToString() + "','" + dt.Rows[i]["發包方負責姓名"].ToString() + "','" + dt.Rows[i]["負責人證件"].ToString() + "','"
                                        + dt.Rows[i]["負責人證件號碼"].ToString() + "','" + dt.Rows[i]["聯系電話"].ToString() + "','" + dt.Rows[i]["發包方地址"].ToString()
                                        + "','" + dt.Rows[i]["郵政編碼"].ToString() + "','" + dt.Rows[i]["發包方調查員"].ToString() + "',#" + dt.Rows[i]["發包方調日期"].ToString()
                                        + "#,'" + dt.Rows[i]["發包方調查記"].ToString() + "')";
                                    //MessageBox.Show(MySql);
                                    AccessDAO.updateAccessTable(MySql, accessFilePath);
                                    progressBar1.Visible = true;
                                    progressBar1.PerformStep();
                                }
                                progressBar1.Hide();
                                MessageBox.Show("數據導入成功!");
                            }
                            else
                            {
                                MessageBox.Show("請檢查你的Excel中是否存在數據");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            #endregion

            #region excel導入到.mdb承包方表中
            if (raReceive.Checked == true)
            {
                try
                {
                    OleDbConnectionStringBuilder connectStringBuilder = new OleDbConnectionStringBuilder();
                    connectStringBuilder.DataSource = this.textBox1.Text.Trim();
                    connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connectStringBuilder.Add("Extended Properties", "Excel 8.0");
                    using (OleDbConnection cn = new OleDbConnection(connectStringBuilder.ConnectionString))
                    {
                        DataSet ds = new DataSet();
                        string sql = "Select * from [cbf$]";
                        OleDbCommand cmdLiming = new OleDbCommand(sql, cn);
                        cn.Open();
                        using (OleDbDataReader drLiming = cmdLiming.ExecuteReader())
                        {
                            ds.Load(drLiming, LoadOption.OverwriteChanges, new string[] { "cbf" });
                            DataTable dt = ds.Tables["cbf"];
                            if (dt.Rows.Count > 0)
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                //寫入數據庫數據
                                    string MySql = "insert into CBF(CBFBM,CBFLX,CBFMC,CBFZJLX,CBFZJHM,CBFDZ,YZBM,LXDH,CBFCYSL,CBFDCRQ,CBFDCY,CBFDCJS,GSJS,GSSHRQ,GSJSR,GSSHR)values('"
                                    + dt.Rows[i]["承包方編碼"].ToString() + "','" + dt.Rows[i]["承包方類型"].ToString() + "','" + dt.Rows[i]["承包方(代表)名稱"].ToString() + "','"
                                    + dt.Rows[i]["承包方(代表)證件"].ToString() + "','"+ dt.Rows[i]["承包方(代表)證件號碼"].ToString() + "','" + dt.Rows[i]["承包方地址"].ToString() + "','"
                                    + dt.Rows[i]["郵政編碼"].ToString()+ "','" + dt.Rows[i]["聯系電話"].ToString() + "','" + dt.Rows[i]["承包方成員數"].ToString() + "',#"
                                    + dt.Rows[i]["承包方調查日"].ToString()+ "#,'" + dt.Rows[i]["承包方調員"].ToString() + "','" + dt.Rows[i]["承包方調記事"].ToString() + "','"
                                    + dt.Rows[i]["公示記事"].ToString() + "',#" + dt.Rows[i]["公示審核日期"].ToString() + "#,'" + dt.Rows[i]["公示記事人"].ToString() + "','"
                                    + dt.Rows[i]["公示審核人"].ToString() + "')";
                                    //MessageBox.Show(MySql);
                                    AccessDAO.updateAccessTable(MySql, accessFilePath);
                                    progressBar1.Visible = true;
                                    progressBar1.PerformStep();
                                }
                                progressBar1.Hide();
                                MessageBox.Show("數據導入成功!");
                            }
                            else
                            {
                                MessageBox.Show("請檢查你的Excel中是否存在數據");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            #endregion

            #region excel導入到.mdb家庭成員表中
            if (raRelation.Checked == true)
            {
                try
                {
                    OleDbConnectionStringBuilder connectStringBuilder = new OleDbConnectionStringBuilder();
                    connectStringBuilder.DataSource = this.textBox1.Text.Trim();
                    connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connectStringBuilder.Add("Extended Properties", "Excel 8.0");
                    using (OleDbConnection cn = new OleDbConnection(connectStringBuilder.ConnectionString))
                    {
                        DataSet ds = new DataSet();
                        string sql = "Select * from [CBF_JTCY$]";
                        OleDbCommand cmdLiming = new OleDbCommand(sql, cn);
                        cn.Open();
                        using (OleDbDataReader drLiming = cmdLiming.ExecuteReader())
                        {
                            ds.Load(drLiming, LoadOption.OverwriteChanges, new string[] { "CBF_JTCY" });
                            DataTable dt = ds.Tables["CBF_JTCY"];
                            if (dt.Rows.Count > 0)
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    //寫入數據庫數據
                                    string MySql = "insert into CBF_JTCY(CBFBM,CYXM,CYXB,CYZJLX,CYZJHM,YHZGX,SFGYR,CYBZ)values('"+ dt.Rows[i]["承包方編碼"].ToString() + "','"
                                        + dt.Rows[i]["成員姓名"].ToString() + "','" + dt.Rows[i]["成員性別"].ToString() + "','" + dt.Rows[i]["成員證件類型"].ToString() + "','"
                                        + dt.Rows[i]["成員證件號碼"].ToString() + "','" + dt.Rows[i]["與戶主關系"].ToString() + "','" + dt.Rows[i]["是否共有人"].ToString() + "','" 
                                        + dt.Rows[i]["成員備注"].ToString() + "')";
                                    //MessageBox.Show(MySql);
                                    AccessDAO.updateAccessTable(MySql, accessFilePath);
                                    progressBar1.Visible = true;
                                    progressBar1.PerformStep();
                                }
                                progressBar1.Hide();
                                MessageBox.Show("數據導入成功!");
                            }
                            else
                            {
                                MessageBox.Show("請檢查你的Excel中是否存在數據");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            #endregion
        }

      

    }
}

 

三、用到的自定義類AccessDAO:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Text.RegularExpressions; //正則表達式引用所需

namespace Data1
{
    //access的數據訪問接口
    class AccessDAO
    {
        public static class Property
        {
            public static string accessFilePath = "d:\\nCTDCBJYQ04DataSet.mdb";
            //若放入主程序,則可如下設置
            //one mainFrm = (one)this.Owner;
            //string prjName = mainFrm.laPrj.Text;
            //string prjPath = mainFrm.laFile_Path.Text;
           // public static string accessFilePath = prjPath + "\\矢量數據\\" + prjName + ".mdb";
        }

        //從access數據庫獲取數據
        //dataFilePath指定access文件的路徑
        //sql指定數據庫的查詢語句
        //DataSet為查詢返回的數據集
        public static DataSet getDataSetFromAccessTable(string sql, string dataFilePath)
        {
            // 連接數據庫 
            OleDbConnection connct = new OleDbConnection();
            string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
            connct.ConnectionString = oleDB;

            //創建命令
            OleDbCommand command = new OleDbCommand(sql, connct);

            //打開數據庫
            connct.Open();

            //執行命令
            DataSet dataSet = new DataSet();
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);

            dataAdapter.Fill(dataSet);

            // 關閉連接 
            connct.Close();
            return dataSet;
        }


        //更新或者插入數據到access數據庫
        //dataFilePath指定access文件的路徑
        //sql指定數據庫的更新或者插入語句
        //返回值int表示此次更新影響的行數
        public static int updateAccessTable(string sql, string dataFilePath)
        {
            // 連接數據庫 
            OleDbConnection connct = new OleDbConnection();
            string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
            connct.ConnectionString = oleDB;

            //打開數據庫
            connct.Open();

            //執行命令
            OleDbCommand myCommand = new OleDbCommand(sql, connct);
            int res = myCommand.ExecuteNonQuery();

            // 關閉連接 
            connct.Close();
            return res;
        }

        //更新或者插入數據到access數據庫
        //dataFilePath指定access文件的路徑
        //command指定操作(更新或者插入)數據庫的命令
        //返回值int表示此次更新影響的行數
        public static int updateAccessTable(OleDbCommand command, string dataFilePath)
        {
            // 連接數據庫 
            OleDbConnection connct = new OleDbConnection();
            string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
            connct.ConnectionString = oleDB;

            //打開數據庫
            connct.Open();

            //執行命令
            //OleDbCommand myCommand = new OleDbCommand(sql, connct);
            command.Connection = connct;
            int res = command.ExecuteNonQuery();

            // 關閉連接 
            connct.Close();
            return res;
        }

        public bool ckDigital_Num(string digitalItem, int digitalNum)                //正則檢查是否為數字,且位數一定
        {
            bool isDigital_Num = false;
            Regex reGen = new Regex(@"^\d{" + digitalNum.ToString("F0") + "}$");                 //正則表達式,n位數字
            if (reGen.IsMatch(digitalItem))
                isDigital_Num = true;
            return isDigital_Num;
        }


    }
}

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM