把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数 ...
随机推荐
- PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题(二)
转载:http://blog.csdn.net/dupang/article/details/8248335 按照网上的教程搭建Dreamweaver CS5.5+PhoneGap移动开发环境,在进行 ...
- leetcode面试准备: Jump Game
1 题目 Given an array of non-negative integers, you are initially positioned at the first index of the ...
- 查看TEMP使用情况
SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ---- ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 深入浅出Node.js (附录A) - 安装Node
A.1 Windows系统下的Node安装 A.2 Mac系统下Node的安装 A.3 Linux系统下Node的安装 A.4 总结 A.5 参考资源
- VM Depot 镜像新增系列III – 社交媒体,内容管理 与 项目协同系统
发布于 2014-06-30 作者 刘 天栋 对于架设可协同作业的网站平台, Windows Azure有着得天独厚的优势.这不仅在于其强大的扩展性和安全性,更重要的是 Azure 平台对各类 ...
- (转载)javascript实现弹出对话框
(转载)http://xiezezhun.iteye.com/blog/335898 简单对话框 一般常用的是 alert prompt confirm三种对话框 JavaScript代码: < ...
- 博弈论(男人八题):POJ 1740 A New Stone Game
A New Stone Game Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5694 Accepted: 3119 ...
- Selenium WebDriver + Grid2 + RSpec之旅(一)----准备篇
Selenium WebDriver + Grid2 + RSpec之旅(一) ----准备篇 前言 在Web 2.0 应用中,在浏览器种类盛行的时代,我们在测试过程中不仅要模 ...
- JavaScript高级程序设计21.pdf
第10章 DOM DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口) IE中所有DOM对象都是以COM对象的形式实现的,这意味着IE中的对象与原生JavaScript对象 ...