winfrom 导入Excel表到access数据库(来自小抽奖系统)
网上有很多这种方法,本人只是针对自己的系统来实现的
//导入excel表
private void ImportTSMenu_Click(object sender, EventArgs e)
{
OpenFileDialog openFD = new OpenFileDialog();
openFD.Filter = "Excel文件|*.xls";
if (openFD.ShowDialog(this.Owner) == DialogResult.OK)
{
string strFilename = openFD.FileName;
if (!File.Exists(strFilename))
{
MessageBox.Show("文件不存在,请重新选择文件!");
return;
}
//string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + strFilename + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFilename + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
//关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2
//HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
//参数Excel 8.0 对于Excel 97以上到2003版本都用Excel 8.0,2007或2010的都用Extended Properties=Excel 12.0
//IMEX 有三种模式:
//当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
//当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
//当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
OleDbDataAdapter oldAda = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet ds = new DataSet();
oldAda.Fill(ds); //C#导入execl 找不到可安装的 ISAM,如果是Office2003版本
//string strConn = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" + excelFile + ";Extended Properties=‘Excel 8.0; HDR=YES; IMEX=1’";
//如果是2007以上
//string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filePath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";
DataTable dt = ds.Tables[];
InsertData(dt);
//this.FTLucky_Load(sender, e);
GetData();
}
}
下面有for循环一条条插入到数据库可能效率不高,应该有批量导入的,好像sql是用SqlBulkCopy,至于access的话,由于时间紧,且要求不高,就暂时用for代替了
#region 3、将excel数据插入到数据库
/// <summary>
/// 将DataTable的数据插入到数据库
/// </summary>
/// <param name="dt">excel数据</param>
private void InsertData(DataTable dt)
{
try
{
oledCon = sqlHelper.OledCon();
oledCon.Open();
string strInsert = "";
for (int i = ; i < dt.Rows.Count; i++)
{
strInsert = "insert into Information([UserName],[Phone]) values('" + dt.Rows[i][] + "','" + dt.Rows[i][] + "')";
oledCmd = new OleDbCommand(strInsert, oledCon);
oledCmd.ExecuteNonQuery();
}
MessageBox.Show("导入成功!");
}
catch (Exception ex)
{
MessageBox.Show("导入出错,原因:" + ex.Message.ToString());
}
finally
{
oledCon.Dispose();
oledCon.Close();
}
}
#endregion
winfrom 导入Excel表到access数据库(来自小抽奖系统)的更多相关文章
- 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...
- C# winform 编程 向ACCESS数据库导入EXCEL表使用心得
public string MyConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ErLake.mdb&quo ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel
Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...
- 向MySql数据库导入excel表数据
最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...
- 利用SQLite_Expert实现Excel表转SqLite数据库
1.保留excel数据中需要的字段,删除无关字段. 2.将excel另存为cvs格式文件.<另存名称如:jizhan.cvs 则导入后表名即为jizhan> 3.看下图,新建数据库,命名为 ...
- SQL Server 2005导入Excel表问题
EXCEL导入到SQL Server经常出现“文本被截断,或者一个或多个字符在目标代码页中没有匹配项” 原因: SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别. ...
- asp.net导入Excel表
一.导入Excel的界面这个界面很简单,代码就不列出来了.二.导入的代码我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里.这里需要注意的是 ...
- 使用Navicat导入excel表
1:首先创建Navicat与数据库的连接 2:,从数据库中选择要导入的表 3:导入向导,选择要导入的数据类型 4:创创建excel表:一般第一行需要与表的属性相对应,这样就不需要手动设置对应栏位 不一 ...
随机推荐
- 第十章 Vim程序编辑器学习
1.Vim是进阶版的vi,vim不但可以用不同颜色显示文字内容,还能进行诸如shell script,C program等程序编辑功能. 区别:vi是老师的字处理器,不过功能已经很齐全,但还是有可以进 ...
- 在MS CRM 4.0中引用JS文件
引用: http://blog.csdn.net/qzw4549689/article/details/6027987 1.编写好JS代码,在ISV目录下新建一个目录javascripts,将JS文件 ...
- Delphi中自画TStatusBar面板中的文字颜色背景以及图片
转自 http://www.delphitop.com/html/kongjian/351.html 首先定义:procedure TStatusForm.FormCreate(Sender: TOb ...
- 源码解读—LinkedList
学习了一下linkedList的源码,做下记录. java底层实现的是双向环链表,程序定义了一个header,来保存头结点,header.next指向最后一个节点(最后插入到),header.prev ...
- java整数类型
1.整数类型:byte占8位,short 占16位,int占32位,long占64位. 2.对于long类型的值,若赋值给的值大于int类型的最大值或小于int型的最小值,则需要在数字后加L或l,表示 ...
- 基本配置6-被忽悠进了CentOS 6
今天突然想到原来配置的apache2与tomcat的连接,测试发现有2个小问题: 1.<%=path%>丢失问题:原来配置的 ProxyPass /xxx http://192.168.1 ...
- java中好玩的案例
1:实现猜数字游戏, 如果没有猜对可以继续输入你猜的数字,如果猜对了停止程序. 最多只能猜三次,如果还剩下最后一次机会的时候要提醒用户. 代码: Random random = new Random( ...
- 双系统下恢复Ubuntu引导菜单
引言 使用双系统的时候,我们经常重装Windows!那么有没有一种办法:只重装Windows而不重装Ubuntu呢? 在使用Win XP/Ubuntu双系统时,这个问题很好解决!但是在使用Win7(包 ...
- 手机app测试之我见
app端功能测试不是单纯的点点点,在实际的工作中,测试小白需要从业务入手,熟悉基本测试点.测试技巧和方法,以点带面,从功能和思维入手,避免眼高手低: app端测试,首先我们需要考虑不同的机型系统.不同 ...
- 初探appium之环境搭建
前段时间一直在折腾python的爬虫,想搞接口自动化.但是写了一个月,发现在我现在的这份的工作中根本接触不到接口.所以就想先放下来,先做点目前能够接触到的,也需要做的东西. 东西越来越多,人手不足.自 ...