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 == )
{
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 > )
{
for (int i = ; 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 > )
{
for (int i = ; 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 > )
{
for (int i = ; 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;
} }
}
C#中实现excel文件批量导入access数据表中的更多相关文章
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
- python将Excel文件内容导入Mysql数据
为了方便起见,将所有字段类型设置为str,理解mysql的语法这个玩意贼简单 # _*_ coding:utf-8 _*_import pandas as pd #先装个pandas ,pip ins ...
- pandas 将多个dataframe保存为一个excel文件的多个sheet表中
# 创建文件 def create(): df1 = pd.DataFrame({"a1": [1, 2, 3], "b1": [4, 5, 6]}) df2 ...
- C# 中dataTable中的数据批量增加至数据表中
/// <summary> /// 批量添加 /// </summary> /// <param name="dt"></param> ...
- C#读取Access数据表中某一列内容,保存至数组
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb";OleDbConnecti ...
- 【Python】通过python代码实现demo_test环境的登录,通过csv/txt/excel文件批量添加课程并开启课程操作--(刚开始 项目 页面 模块 元素这种鸟 被称作pageobject 等这些搞完 然后把你的定位器、数据 和脚本在分离 就是传说中那个叫数据驱动 的鸟)
一.1.通过csv文件批量导入数据 1 from selenium import webdriver from time import ctime,sleep import csv #循环读取每一行每 ...
- C#项目中操作Excel文件——使用NPOI库
转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包 ...
- Navicat导入导出数据表
当我们对mysql数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
随机推荐
- MySQL 体系结构
标签:MYSQL/数据库/查询原理/体系结构 概述 学习一门数据库系统首先得了解它的架构,明白它的架构原理对于后期的分析问题和性能调优都有很大的帮助,接下来就通过分析架构图来认识它. 目录 概述 架构 ...
- 我所记录的git命令(非常实用)
一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...
- 为jQuery添加Webkit的触摸方法支持
前些日子收到邮件,之前兼职的一个项目被转给了其他人,跟进的人来问我相关代码的版权问题. 我就呵呵了. 这段代码是我在做13年一份兼职的时候无聊加上去的,为jQuery添加触摸事件的支持.因为做得有点无 ...
- Hadoop 裡的 fsck 指令
Hadoop 裡的 fsck 指令,可檢查 HDFS 裡的檔案 (file),是否有 corrupt (毀損) 或資料遺失,並產生 HDFS 檔案系統的整體健康報告.報告內容,包括:Total blo ...
- Redis应用场景一
Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的 ...
- Android Drawable 那些不为人知的高效用法
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43752383,本文出自:[张鸿洋的博客] 1.概述 Drawable在我们平时的 ...
- 深入学习jQuery元素过滤
× 目录 [1]索引过滤 [2]内容过滤 前面的话 过滤是jQuery扩展的一个重要的内容.jQuery选择器中的一个重要部分就是过滤选择器.除了过滤选择器,还有专门的元素过滤的方法.本文将详细介绍j ...
- Android数据存储之Sqlite的介绍及使用
前言: 本来没有打算整理有关Sqlite数据库文章的,最近一直在研究ContentProvider的使用,所有觉得还是先对Sqlite进行一个简单的回顾,也方便研究学习ContentProvider. ...
- ASP.NET MVC之Unobtrusive Ajax(五)
前言 这一节我们来讲讲Unobtrusive中的Ajax提交,大部分情况下我们是利用JQuery来进行Ajax请求,当然利用JQuery来进行表单Ajax请求也不例外,但是相对于Unobtrusive ...
- 初探nodeJS
一.node概要 对nodeJS早有耳闻,但是一直迟迟没有对它下手,哈哈哈,今儿咱就来初探一下它. nodeJS是个啥东东? nodeJS,我的理解就是可以运行在后端的JavaScript. 为什么它 ...