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;
        }

    }
}

  

时间: 2024-11-03 05:39:50

C#中实现excel文件批量导入access数据表中的相关文章

mysql中把一个表的数据批量导入另一个表中(不同情况)

mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段. 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表 中. 类别一. 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:(此方法只适合导出两表在同一database) INSERT INTO 目标表 SELECT * FROM 来源表;

Excel文件批量导入SQLSERVER数据库中(利用Foreach容器)

具体步骤如下图:1.首先在SSIS工具箱拖一个 Foreach控件,并选择对应的文件夹,匹配对应的文件,具体截图如下 2.创建变量去接收 3.拖入一个数据流任务,里面再拖入一个excel源和OLE DB Destination,分别进行以下设置 4.编辑excel连接管理器,这里将用到foreach的变量来代替刚刚选择的那个excel文件,连接管理器的属性中设置变量的映射方法,expressions的属性编辑列表中,左边选择excelfilepath,这个是连接管理器的属性,我们将用变量来代替,

C#项目中操作Excel文件——使用NPOI库

转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录.分析.汇总功能模块的项目.常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Excel文件当做一个数据源来进行数据的读取操作. 优点:实现方式简单,读取速度快: 缺点:读取Excel数据的过程不太灵活,对内存的占用比较高,当数据量变的很大时,容易由于内存空间

[办公自动化] 再读《让EXCEL飞》(从excel导入access数据时,union联合查询,数据源中没有包含可见的表格)

一年多以前就买了@Mrexcel的<让excel飞>这本书.整体思路是利用access结合excel,大幅度提高数据分析效率. 最近又拿出来看了看.第十五章,比高级筛选更“高级”,P241.主要讲述多表关联查询,可以适用于一对多的场景. P248:联接属性的三种类型. Union联合查询可以用来实现同表头的多表数据合并. 但是将数据倒回到excel时,发现老是报错. 提示错误信息如下:数据源中没有包含可见的表格. 后来发现原因和解决方法如下: 借助Access中的可视化查询设计器,可以很大程度

poi excel文件的导入

使用poi来实现excel文件的导入导出.使用struts2来做处理. 首先看jsp页面: index.jsp: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC

excel 文件的导入

excel 文件的导入 1.\extra_apps\xadmin\plugins下,添加一个文件 excel.py 添加以下代码: import xadminfrom xadmin.views import BaseAdminPlugin,ListAdminViewfrom django.template import loader # excel 导入class ListImportExclePlugin(BaseAdminPlugin): import_excel = False def i

SSM excel文件的导入导出

对于excel文件的导入导出,后台接收读取和建表封存都是固定死的,所以对于excel导入时,excel文件内容必须匹配后台相关对象,不然报错. excel文件导出,用<a><a/>标签即可,通过后台去完成 ,不可用ajax去写导出,ajax请求只是个"字符型"的请求,即请求的内容是以文本类型存放的. 文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件. 当获取前台导入这个命令后,会通过Mybati

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

C#中获取Excel文件的第一个表名

//    2.以数据库方式打开并输入数据//      此方式将xls文件所在目录看作数据库,其中的xls文件看作数据库表,表名即文件名(不加扩展名).//      函数importExcelToDataSet(string FilePath,string sheet)功能:从xls中读出数据到DataSet中,并返回DataSet对象. private DataSet importExcelToDataSet(string FilePath/*即文件目录的路径*/, string shee