把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数 ...
随机推荐
- RabbitMQ安装简单过程
找到一本ACTION IN RABBITMQ,仔细看.现在先安装起来.. 参考主要的URL,包括安装,用户管理,权限管理.我用的都是最新版本. http://my.oschina.net/indest ...
- ibatis动态的传入表名、字段名
ibatis动态的传入表名.字段名,主要传入表名和字段名的不一致. Java代码: Map<String,Object> params = new HashMap<String,Ob ...
- BZOJ1614: [Usaco2007 Jan]Telephone Lines架设电话线
1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 892 Solved: ...
- 【转】Android Listener侦听的N种写法
原文网址:http://blog.csdn.net/ithomer/article/details/7489274 Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种 ...
- IOS7官方推荐图标和图像尺寸
图标和图像大小 每一个应用程序需要一个应用程序图标和启动图像.此外,一些应用程序需要自定义的图标来表示特定于应用程序的内容,功能,或在导航栏,工具栏和标签栏模式. 不像其他的定制艺术品在您的应用程序的 ...
- unity3d 制造自己的水体water effect(二)
前篇:unity3d 制造自己的水体water effect(一) 曲面细分:Unity3d 使用DX11的曲面细分 PBR: 讲求基本算法 Unity3d 基于物理渲染Physically-Base ...
- 新图形API为unity5 带来了什么&下一代新图形API的好处
西瓜的演讲ppt翻译+解释+其他: wolf96 在最基本的层面上,这些新api是为了改进CPU性能和效率,通过:减少CPU渲染瓶颈的情况,提供更多可预测和稳定的驱动的行为,给应用程序更多控制,就像在 ...
- ubuntu错误解决。
ubuntu中出现如下错误: W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-backports/main/i ...
- 利用qemu模拟嵌入式系统制作全过程
http://www.tinylab.org/using-qemu-simulation-inserts-the-type-system-to-produce-the-whole-process/ 利 ...
- c#调用钩子
1 概述 在c++中有钩子程序,但是在C#还没有对其进行封装,所以需要自己根据实际情况调用钩子.钩子在我的理解下是,通过初始化钩子与系统中消息映射建立某种关系,当点击鼠标或者键盘,就会通过钩子中的回调 ...