将Excel导入数据库大致流程:  Excel数据->DataSet->数据库

需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGrid也需要。

此为背景

---------------------------割割快乐--------------------------------------------------------------------------

1.将Excel读入到DataSet中:

首先用OleDbDataAdapter这个小桥梁把Excel中的数据选出来,为什么Excel中的数据能够用OleDbDataAdapter选出来呢?这就是微软从中做了手脚,把Excel当做一个Access数据库表来看,所以就把Excel数据导入数据库转化成了数据库与数据库之间通过DataSet这个掮客传递数据的故事。那么这个手脚是怎么做的呢?问我我也不知道,我们只需要安装微软提供的Office system 驱动程序的数据连接组件,才不会报未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序的错。

分析完了就看代码:

        DataSet dsRet = new DataSet();
//OleDbDataAdapter的操作SQL语句,[Sheet1$]是你Excel表格的sheet名字,[]和$不能少
string sqlabc = "select * from [Sheet1$]";
//OleDbDataAdapter的连接字符串,那个filePath就是你本地Excel的路径,其余就是照抄,不能写错
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=No;IMEX=1'";
OleDbDataAdapter oada = new OleDbDataAdapter(sqlabc, strConn);
oada.Fill(dsRet,"Result");

这样就把Excel里面的数据放到DataSet里面了。

2.将DataSet里的数据放到数据库(Oracle为例)中

这里我用的是最笨的方法,用循环一行一行往里硬插,当然了,有人说用这种方法方便:首先把源数据表选出来的数据存入DataSet1,把我从Excel中取的数据存入DataSet2,然后用DataSet的Merge方法合并到DataSet1中,最后用XXXDataAapter的update方法更新数据库。不过这样没成功,原因是因为你Excel的表头是A,B,C...等等,而你DataSet1的表头是你为数据库的数据自己写的有意义的字段名,你横不能把数据库中的表的字段叫A,B,C吧!所以还是一个一个插稳妥。

分析完了看代码:

       string connt = "Data Source=172.20.65.236;User Id=bjmedicare_qy;Password=bjmedicare_qy";//连接数据库
string sql = "insert into test_m(F1,F2,F3,s_month,oper) values(:F1,:F2,:F3,:S_MONTH,:OPER)";//必须与数据库字段名一致
OracleConnection conn = new OracleConnection(connt);
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
//循环着插,还能插入自己设定的数据
for (int i = ; i < ds.Tables["Result"].Rows.Count; i++)
{
//这里需要考虑数据格式
cmd.Parameters.Add("F1", OracleType.VarChar).Value = ds.Tables["Result"].Rows[i][];
cmd.Parameters.Add("F2", OracleType.VarChar).Value = ds.Tables["Result"].Rows[i][];
cmd.Parameters.Add("F3", OracleType.Number).Value = ds.Tables["Result"].Rows[i][];
cmd.Parameters.Add("S_MONTH", OracleType.VarChar).Value = DateTime.Now.ToString("yyyyMM");
cmd.Parameters.Add("OPER", OracleType.VarChar).Value = "admin";
}
conn.Close();
conn.Dispose();

这样就基本完成了题目所要求的内容。

ASP.NET 将Excel导入数据库的更多相关文章

  1. asp.net 中excel 导入数据库

    protected void Button1_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(Sy ...

  2. excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution

    当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...

  3. C# ASP.NET CSV文件导入数据库

    原文:C# ASP.NET CSV文件导入数据库 using System; using System.Collections.Generic; using System.Text; using Sy ...

  4. Java实现将Excel导入数据库和从数据库中导出为Excel

    实现的功能: 用Java实现从Excel导入数据库,如果存在就更新 将数据库中的数据导出为Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的 ...

  5. 记录-java(jxl) Excel导入数据库

    本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl  jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...

  6. Excel导入数据库百万级数据瞬间插入

    Excel导入数据库百万级数据瞬间插入 百万级别,瞬间,有点吊哇

  7. Hibernate+jxl+excel导入数据库

    在将excel中的10w行数据导入数据库中时,总发生内存溢出,一开始使用的Spring+Hibernate;不知如何使用批处理,后来只是用Hibernate,10W行数据几分钟完成, 代码如下: pu ...

  8. 使用thinkphp框架实现Excel导入数据库

    之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...

  9. Excel导入数据库(三)——SqlBulkCopy

    上篇博客中介绍了批量导入数据库的方法:下面介绍一下批量导入过程的核心——SqlBulkCopy类. 下面先介绍一些原理性的东西:SQLBulkCopy类,通常用于数据库之间大批量的数据传递.即使表结构 ...

随机推荐

  1. 在openSUSE13.2上gem install rails -v 4.1成功,但是之后不存在rails命令解决

    解决方案为,不要用sudo gem install就好了,卧槽

  2. swoole 异步队列

    安装步骤如下(推荐把安装文件下载到 /usr/local/src 目录下): step 1: wget --no-check-certificate https://github.com/swoole ...

  3. 【6.24-北京】AppCan移动开发者大会:最新议程曝光

    6.24,首届AppCan移动开发者大会将在北京国际会议中心召开. 大会以“平台之上,应用无限”为主题,旨在探讨在“互联网+双创”的大潮下,通过移动互联网技术.思维.模式,帮助开发者/创业者实现创新创 ...

  4. UIBezierPath 的使用介绍

         使用UIBezierPath类可以创建基于矢量的路径.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状 ...

  5. php判断来源网址地址并且限制非法来源

    $fromHost = array( 'paipai.com', 'localhost', '127.0.0.1' ); $s = 'http://www.paipai.Com/chong/abc.s ...

  6. php取整函数floor(),round(),intval(),ceil()

    ceil -- 进一法取整说明float ceil ( float value )返回不小于 value 的下一个整数,value 如果有小数部分则进一位.ceil() 返回的类型仍然是 float, ...

  7. LinQ[持续更新]

    var query = from t1_row in eprg.AttestationConditions where t1_row.Attestation.ProviderNumber == pro ...

  8. A taste of urllib3

    import urllib3 import certifi http = urllib3.PoolManager( cert_reqs='CERT_REQUIRED', # Force certifi ...

  9. Graceful degradation versus progressive enhancement

    http://ued.taobao.org/blog/2008/10/understanding-progressiveen-hancement-chs-translation/ http://www ...

  10. 学Lua(上)

    学Lua(上) 在很多游戏中,脚本语言是不可或缺的一部分,很多游戏都使用到了Lua,js,python一类的脚本,脚本语言可以在很多方面给开发进程带来帮助.脚本语言可以作为初始化文件读入变量和游戏数据 ...