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) ...
随机推荐
- Android知识杂记(四)
1.完整退出activity的设计思路 1.1 封装一个基础activity类 public abstract class RootActivity extends FragmentActivity{ ...
- Azure PowerShell (8) 使用PowerShell设置Azure负载均衡器规则
<Windows Azure Platform 系列文章目录> 注意:如果Azure面对的客户只是企业级客户,企业级客户使用NAT设备访问Internet的话,因为多个客户端使用相同的So ...
- [大数据之Sqoop] —— Sqoop初探
Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中. Sqoop也是基于Mapreduce来做的数据导入. 关于 ...
- 安装Oracle 12c精简客户端(不带数据库)
注:Oracle客户端向下兼容,故也可以连接11g的数据库 下载页面皆为:http://www.oracle.com/technetwork/topics/winsoft-085727.html ...
- Text文档编码识别方法
Text文档编码识别方法 在做文档读取的时候,时常碰到编码格式不正确的问题,而要怎么样正确识别文档的编码格式,成了很多程序员的一块心病,今天我就要试着治好这块心病,这段代码的浓缩来自上千万文档的数据分 ...
- Java三大框架 介绍
三大框架:Struts+hibernate+spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...
- uwp如何建立任何形状的头像,如圆形,方形,六边形等
最近掌上英雄联盟更新了新的界面,其中“我”界面的更新比较大,我目前还在加紧跟进.在做这个界面的时候,这个头像我想了一下,其实挺好解决的.先上个原图 这个头像一开始我也完全找不到头绪,然后我把头像放大了 ...
- SSIS Design3:并发执行
1,利用优先约束来并发处理数据,Data Flow Task 和 Data Flow Task 1 是并发执行的,而 Data Flow Task2 必须等到 Data Flow Task 和 Dat ...
- li 前面的缩进怎么去除?
异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 设置margin和padding为0或者为比较小的值就可以了
- Python标准模块--linecache
1.模块简介 linecache主要用于缓存文件内容,如果下次继续读取该文件,则不需要打开文件,直接在缓存中获取该文件内容. 2.模块使用 模块的基本方法有getline,clearcache,get ...