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 2.7的安装(64位win10)
Python 2.7.12 下载地址:https://www.python.org/downloads/release/python-2712/ 安装路径D:\Program Files\Python ...
- 实战Django:官方实例Part5
俗话说,人非圣贤,孰能无过.在堆代码的过程中,即便是老攻城狮,也会写下一些错误的内容.俗话又说,过而能改,善莫大焉.要改,首先要知道哪里存在错误,这便是我们要对投票应用进行测试的原因. 21.撰写 ...
- 统计工具之QQ图
正态 QQ 图和普通 QQ 图 分位数-分位数 (QQ) 图是两种分布的分位数相对彼此进行绘制的图.评估数据集是否正态分布,并分别研究两个数据集是否具有相似的分布. 如何构建正态 QQ 图 首先,数据 ...
- StyleCop学习笔记——初识StyleCop
一.定义 StyleCop是微软的一个开源的静态代码分析工具,检查c#代码一致性和编码风格. 二.支持的环境. JetBrains R# 5.1.3 ( 5.1.3000.12) JetBrains ...
- Linux下mysql自动备份
#!/bin/bashDATE=`date +%Y-%m-%d-%H:%M -d -3minute`USER=rootPASSWORD=mayboBACKUP_DIR='/home/mysqlbak/ ...
- 创建自己的oracle解释计划
1.解释计划 当使用explain plan来为一个查询生成预期的执行计划时,输出将包括一下几种: SQL访问的每一张表: 访问每张表的方法: 每一个需要联结的数据源所使用的联结方法: 按次序列出的所 ...
- eclipse+cdt+minGW (C/C++ 编译)
1. 安装Eclipse CDT 方法1: 已安装Eclipse的话,可以通过菜单Help->Install New Software,安装CDT插件. 点击ADD后 Name:CDT L ...
- chmod命令用法
指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix ...
- layer 弹出子页面然后给父页面赋值
//----赋值 并关闭当前页面 开始---- FunctionActionDeleteXZ = function (CompanyId, RelCompanyName) { parent.$(&qu ...
- trap命令使用
分享一个shell脚本技巧,大家写shell脚本的时候,一般而言仅仅保证功能可用,但程序的鲁棒性却不是太好,不够健壮,多数是脚本处理 一些中断信号导致,应对非预期的系统信号,其实系统自带的trap命令 ...