ASP.NET 将Excel导入数据库
将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导入数据库的更多相关文章
- asp.net 中excel 导入数据库
protected void Button1_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(Sy ...
- excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution
当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...
- C# ASP.NET CSV文件导入数据库
原文:C# ASP.NET CSV文件导入数据库 using System; using System.Collections.Generic; using System.Text; using Sy ...
- Java实现将Excel导入数据库和从数据库中导出为Excel
实现的功能: 用Java实现从Excel导入数据库,如果存在就更新 将数据库中的数据导出为Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的 ...
- 记录-java(jxl) Excel导入数据库
本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...
- Excel导入数据库百万级数据瞬间插入
Excel导入数据库百万级数据瞬间插入 百万级别,瞬间,有点吊哇
- Hibernate+jxl+excel导入数据库
在将excel中的10w行数据导入数据库中时,总发生内存溢出,一开始使用的Spring+Hibernate;不知如何使用批处理,后来只是用Hibernate,10W行数据几分钟完成, 代码如下: pu ...
- 使用thinkphp框架实现Excel导入数据库
之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...
- Excel导入数据库(三)——SqlBulkCopy
上篇博客中介绍了批量导入数据库的方法:下面介绍一下批量导入过程的核心——SqlBulkCopy类. 下面先介绍一些原理性的东西:SQLBulkCopy类,通常用于数据库之间大批量的数据传递.即使表结构 ...
随机推荐
- Python脚本控制的WebDriver 常用操作 <三> 浏览器最大化
下面将模拟执行一个控制浏览器最大化的操作 测试用例场景 当我们在测试中使用一些基于图像和坐标的辅助测试工具时,我们就会需要使浏览器在每次测试时保存最大化,以便在同一分辨率下进行图像比对和坐标点选. 举 ...
- Linq操作
Linq使用Group By 1 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述 ...
- 【转】Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot ...
- CA证书过期
CA证书问题请教!最近在客户这里做Exchange2010及RMS项目,对当前Ca证书颁发机构的环境做了下勘察和调研,发现有些地方出现警号显示过期,不知道会不会影响Exchange和Adrms的集成部 ...
- mysql索引合并:一条sql可以使用多个索引
前言 mysql的索引合并并不是什么新特性.早在mysql5.0版本就已经实现.之所以还写这篇博文,是因为好多人还一直保留着一条sql语句只能使用一个索引的错误观念.本文会通过一些示例来说明如何使用索 ...
- 数据库事务故障恢复undo日志检查点
checkpoint 检查点 checkpoint,即检查点.在undolog中写入检查点,表示在checkpoint前的事务都已经完成commit或者rollback 了,也就是检查点前面的事务 ...
- hdu 2648 Shopping
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2648 纯暴力的方法T_T... 如下: #include<cstdio> #include ...
- libmemcached upcoming ISO C++ standard, C++0x
在编译我的小程序的时候,触发了一个编译错误,程序中使用了libmemcached,错误如下: 1 2 3 4 5 6 7 8 9 In file included from /usr/lib/gcc/ ...
- iOS开发的22个奇谲巧技
结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁. 1. TableView不显示没内容的Cell怎么办? 类似于图1 ...
- [转]VC的DDK编译环境构建
[转]VC的DDK编译环境构建 http://blog.csdn.net/skdev/article/details/1336935 1 环境状况 Windows XP SP1 NTDDK(win ...