一 、界面簡單設計如下:
二 、代碼如下:
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; } } }