把Excel数据导入到数据库

引入命名空间
using System.IO;
using System.Data;
using System.Data.OleDb;
引入命名空间
首先要把Excel上传到服务器
//上传Excel文件到服务器
protected void btnUpLoad_Click(object sender, EventArgs e)
{
ddlSelect.Items.Clear();
if (this.fuExcel.HasFile)
{
string filename = fuExcel.PostedFile.FileName;
FileInfo info = new FileInfo(filename);
string name = info.Name;
string type = info.Extension;
if (type == ".xls" || type == ".xlsx")
{
string savepath = Server.MapPath("~/Excel");
this.fuExcel.SaveAs(savepath+"\\"+name);
filename=savepath+"\\"+name;
getSheetName(filename);
ViewState["FileName"] = filename;
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script>alert('文件格式不正确,请重新选择!')</script>");
}
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script>alert('请选择要导入数据的Excel文件!')</script>");
}
}
上传Excel到服务器
//获取EXCEL工作簿名称
private DataSet getSheetName(string filepath)
{
DataSet ds = new DataSet();
string strCon;
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= '" + filepath + "'; Extended Properties='Excel 12.0; HDR=YES;IMEX=1';";
OleDbConnection ODConn = new OleDbConnection(strCon);
ODConn.Open();
DataTable dtOle = ODConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dtOle == null) return null;
String[] excelSheets = new String[dtOle.Rows.Count];
int i = ;
foreach (DataRow row in dtOle.Rows)
{
excelSheets[i] = row["TABLE_NAME"].ToString();
ddlSelect.Items.Add(new ListItem(excelSheets[i].Substring(,excelSheets[i].Length-),excelSheets[i].Substring(,excelSheets[i].Length-)));
i++;
}
ODConn.Close();
return ds;
}
获取EXCEL工作簿名称
根据选择的工作簿去导入数据
//把数据导入到数据库中
protected void btnImport_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(ddlSelect.SelectedValue))
{
DataTable dt = GetDate(ViewState["FileName"].ToString()).Tables[];//获取Excel工作薄中的数据
if (dt.Rows.Count > )
{
int s=;
int ss = ;
for (int i = ; i < dt.Rows.Count; i++)
{
DataSet j = sqlhelp.ReturnDataTable("select name from students where name=@0", dt.Rows[i][].ToString());//去重
if (j.Tables[].Rows.Count>)
{
s++;
}
else
{
int x = sqlhelp.ExecuteNonQuery("insert into students(Name,Sex,Birthday,PhoneNum,Post) values(@0,@1,@2,@3,@4)", dt.Rows[i][].ToString(), dt.Rows[i][].ToString(), dt.Rows[i][].ToString(), dt.Rows[i][].ToString(), dt.Rows[i][].ToString());//把数据导入到数据库
ss += x;
}
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script>alert('导入成功有" + ss + "条,数据重复" + s + "条,共有数据" + dt.Rows.Count + "条')</script>");
return;
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script>alert('选中的工作簿内没有数据')</script>");
}
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script>alert('请选择EXCEL的工作簿再进行导入工作')</script>");
}
}
把数据导入到数据库
private DataSet GetDate(string filepath)
{
DataSet ds = new DataSet();
string strCon, strCmm;
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= '" + filepath + "'; Extended Properties='Excel 12.0; HDR=YES;IMEX=1';";
strCmm = "select distinct * from [" +ddlSelect.SelectedValue + "$] ";
OleDbConnection oleConn = new OleDbConnection(strCon);
OleDbCommand oleCmm = new OleDbCommand(strCmm, oleConn);
OleDbDataAdapter oleDa = new OleDbDataAdapter(oleCmm);
oleDa.Fill(ds);
oleConn.Close();
return ds;
}
获取选中工作薄的数据
把Excel数据导入到数据库的更多相关文章
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
- 利用TOAD实现把EXCEL数据导入oracle数据库
利用TOAD实现把EXCEL数据导入oracle数据库 工具: Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...
- c#将Excel数据导入到数据库的实现代码
这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...
- java实现EXCEL数据导入到数据库中的格式问题的解决
之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...
- NOPI Excel 数据导入到数据库
/// <summary> /// 上传excel文件 并将文件数据导入到数据库 /// </summary> /// <param name="file&qu ...
- c#将Excel数据导入到数据库的实现代码(OleDb)
sing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web ...
- c#将Excel数据导入到数据库的实现代码(转载)
假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码如下: using System; using System.Collections.Generic ...
- C# Excel数据导入到数据库
http://www.jb51.net/article/44743.htm 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 复制代码 代码如下: using System ...
- 批量Excel数据导入Oracle数据库
由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...
随机推荐
- ios7新特性3-Map Kit新特性
Map Kit 框架 (MapKit.framework) 包含了大量的改进以及为基于地图的程序提供了新特性.利用地图显示位置信息的应用现在可以使用Maps这个程序用到的3D地图,包括控制程序控制视线 ...
- Mongo的导出工具mongoexport介绍
需求介绍:将mongodb中的数据以文件的方式导出:json或cvs格式 mongo 提供了mongoexport的工具,可以实现将库中的数据以json或cvs的格式输出到文件中.mongoexpor ...
- lc面试准备:Number of 1 Bits
1 题目 Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also ...
- LINUX6.3下RHCS的安装文档
LINUX6.3下RHCS的安装及集群的配置文档 环境: 目前要给华为E6000系列的两个刀片安装RHCS,每一块刀片有两个业务网口和一个管理网口,但是看不见不物理网卡,而是连接到刀片自身携带的一个交 ...
- XenServer的某台机器一直pending住怎么办
XenServer某台VM在操作后,图标一直显示成黄色,无法完成操作,成假死的状态.可以用下面命令强制终止VM: 1.在你假死的机器获得UUID 2.在XenServer的控制台输入如下命令获得ID ...
- CSU 1511 残缺的棋盘 第十届湖南省赛题
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1511 题目大意:在一个8*8的棋盘中,给你一个起点位置和一个终点位置,同时也给你一个陷阱 ...
- 【索引】UML学习笔记
行为图 交互图 交互概览图 时间图 顺序图 通信图 活动图 状态及图 用例图 结构图 包图 类图 对象图 组件图 部署图 组合结构图
- 《Principles of Mathematical Analysis》-chaper1-实数系与复数系
今天我们开始简单的介绍数学分析这门课程,参考教材是Walter Rudin著的<Principles of Mathematical Analysis> 对于一门新课你最开始可能会问的是: ...
- socket编程五种模型
客户端:创建套接字,连接服务器,然后不停的发送和接收数据. 比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户端的连接请求,当接收到某个客户端的连接请求后,创建一个专门用于和该客户端通信的套 ...
- 爬虫技术浅析 | WooYun知识库
爬虫技术浅析 | WooYun知识库 爬虫技术浅析 好房通ERP | 房产中介软件最高水准领导者 undefined