把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数 ...
随机推荐
- 【技术贴】解决xp下Microsoft.SqlServer.Management.PSProvider.dll
解决 安装SQLserver2008时有出错信息,提示:Configuration error description: 无法获得 C:\Program Files\Microsoft SQL Ser ...
- 修改EditText的光标位置
Android 的 EditText 控件默认获取焦点的时候, 插入光标是在第一个位置的,如果EditText中设置了文本, 这个时候光标是在文本的最前面, 而不是文本的最后. 为了方便用户使用, 需 ...
- C++ Prime:sizeof运算符
sizeof运算符的结果部分地依赖于其作用的类型: 对char或者类型为char的表达式执行sizeof运算结果得1: 对引用类型执行sizeof运算得到被引用对象所占空间的大小: 对指针执行size ...
- ClassNotFoundException
在 java socket 通信,使用 ObjectInputStream 的 readObject 时, 出现了问题. ServerProject 问题描述是这样的: java.lang.Class ...
- bzoj3209
首先这道题目不难想到将答案转化为这种形式 2^s[2]*3*s[3]*…max*s[max] 这时候我们要分类讨论,设n的二进制位数为t 当1~n中二进制位数小于t时 我们可以直接用组合的知识,二进制 ...
- LINUX系统中动态链接库的创建与使用
大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部 ...
- 在C#中使用WIA获取扫描仪数据(利用Filter处理图片)
WIA Automation Layer不仅能从设备中捕获照片,还能进行简单的处理.当WIA Automation Layer从设备中捕获照片,保存为一个ImageFile对象,我们可以通过访问该Im ...
- oracle查询语句【转载】
建立的表: 表名:REGIONS 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 REGION_ID NUMBER 是 否 2 REGION_NAME VARCHAR2 25 ...
- IOS引用的静态库里包含category文件出现“unrecognized selector”的解决办法
来自链接:http://blog.csdn.net/ccf0703/article/details/8279187 针对静态库工程中的Category,在被其他工程引入的时候,会出现selector ...
- PHP函数:PHP_SELF
php_self是php的内置变量,记作$php_self,其作用是实现“页内跳转”.这里的页内跳转不同等于html的书签之类的跳转,而是php程序通过URL的尾参数的改变在同一个程序里提供不同的We ...