| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 403 人关注过本帖
标题:续:关于Excel导入到Sql Server2000的问题
收藏  订阅  推荐  打印 
cydesign
Rank: 2
等级:注册会员
帖子:134
积分:1442
注册:2006-11-2
续:关于Excel导入到Sql Server2000的问题

http://bbs.bc-cn.net/dispbbs.asp?boardid=113&replyid=408150&id=106679&page=1&skin=0&Star=1

之前这个帖子我提问过,但是还没有得到很好的解决。看是看明白了。但是在用的时候还是不知道怎么用。因为我太菜了,而且缺乏经验。貌似里面的都是Winform的,但我希望做成ASPX的。最近考完期末试,继续对他的学习。经过我修改,现在的程序还是有点问题,希望各位大大帮忙修改一下!谢谢!

把他复制到一个ASPX文件下就可以直接调试了。

程序如下:
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.OleDb" %>
<% @Import Namespace="System.Data.SqlClient" %>
<% @Import Namespace="System.Configuration" %>
<HTML>
<HEAD>
<title>excle</title>
<script language=c# runat=server>
void SubmitBtn_Click(object sender,System.EventArgs e)
{
string filePath=File1.Value;
string connExcel="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filePath+";Extended Properties=Excel 8.0";
OleDbConnection oleDbConnection = new OleDbConnection(connExcel);
oleDbConnection.Open();
DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string query="SELECT * FROM [Sheet1$]";
DataSet dataSet=new DataSet();
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);
oleAdapter.Fill(dataSet,"gch_Class_Info");
DataGrid1.DataSource=dataSet;
DataGrid1.DataMember="gch_Class_Info";
DataGrid1.DataBind();
DataTable dataTable1 = new DataTable();

string con=ConfigurationSettings.AppSettings["dsn"];

SqlConnection myConnection = new SqlConnection(con);
myConnection.Open();
SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT * FROM gch_Class_Info",myConnection);
SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);
sqlDA1.Fill(dataTable1);
foreach(DataRow dataRow in dataSet.Tables["gch_Class_Info"].Rows)
{
DataRow dataRow1 = dataTable1.NewRow();

dataRow1["classDate"] = dataRow["日期"];
dataRow1["classPlace"] = dataRow["开课城市"];
dataRow1["classTeacher"] = dataRow["讲师"];
dataRow1["classTitle"] = dataRow["课程名称"];
dataRow1["durativeDate"] = dataRow["持续时间"];

dataTable1.Rows.Add(dataRow1);
}

Console.WriteLine("新插入 " + dataTable1.Rows.Count.ToString() + " 条记录");
sqlDA1.Update(dataTable1);
myConnection.Close();
oleDbConnection.Close();
}
</script>
</Head>
<body>
<form id="Form1" method="post" runat="server">
<H3>How to read Excel</H3>
Please select Excel form:<INPUT type="file" id="File1" runat="server"><br>
<asp:Button id="SubmitBtn" runat="server" Text="View" Onclick="SubmitBtn_Click"> </asp:Button><br><br>
<asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>
</form>
</body>
</HTML>

搜索更多相关主题的帖子: Excel  amp  Sql  quot  skin  
2007-1-24 02:42
cydesign
Rank: 2
等级:注册会员
帖子:134
积分:1442
注册:2006-11-2

还有,要在web.config设置名字为dsn的数据库连接代码~呵呵

2007-1-24 02:46
bygg
Rank: 12Rank: 12Rank: 12
来自:乖乖的心中
等级:版主
威望:170
帖子:9783
积分:97459
注册:2006-10-23

晕了,这些代码为什么不写到后台里面去呢?
写在这里面...别人都可以看到你的数据库.......

一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@yahoo.com.cn
2007-1-24 09:39
cydesign
Rank: 2
等级:注册会员
帖子:134
积分:1442
注册:2006-11-2

这个我知道。但我目的是要先实现了功能!实现了之后我会把他改为代码分离的。

但是,大大您还没说要怎样改呢?

2007-1-24 14:31
cydesign
Rank: 2
等级:注册会员
帖子:134
积分:1442
注册:2006-11-2

- -!
2007-1-24 17:39
bygg
Rank: 12Rank: 12Rank: 12
来自:乖乖的心中
等级:版主
威望:170
帖子:9783
积分:97459
注册:2006-10-23

[CODE] protected void Button1_Click(object sender, EventArgs e)
{
string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("mydata.xls") + ";Extended Properties=Excel 8.0";
OleDbConnection oleDbConnection = new OleDbConnection(connExcel);
oleDbConnection.Open();
DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string query = "SELECT * FROM [Sheet1$]";
DataSet dataSet = new DataSet();
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query, connExcel);
oleAdapter.Fill(dataSet);
GridView1.DataSource = dataSet.Tables[0].DefaultView;
GridView1.DataBind();

SqlConnection myConnection = new SqlConnection(数据库连接语句);
try
{
myConnection.Open();
SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT * FROM tbTest", myConnection);
DataTable dataTable1 = new DataTable();
SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);
sqlDA1.Fill(dataTable1);
DataRow dataRow1 = null;
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
dataRow1 = dataTable1.NewRow();
dataRow1["name"] = dataRow["name"];
dataRow1["age"] = dataRow["age"];
dataRow1["address"] = dataRow["address"];
dataTable1.Rows.Add(dataRow1);
}
Response.Write("新插入 " + dataTable1.Rows.Count.ToString() + " 条记录");
sqlDA1.Update(dataTable1);
}
catch (Exception exp)
{
Response.Write(exp.ToString());
}
finally
{
myConnection.Close();
oleDbConnection.Close();
}
}[/CODE]

我这里已经实现了.

[此贴子已经被作者于2007-1-24 20:39:29编辑过]


一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@yahoo.com.cn
2007-1-24 20:37
bygg
Rank: 12Rank: 12Rank: 12
来自:乖乖的心中
等级:版主
威望:170
帖子:9783
积分:97459
注册:2006-10-23

excel 里面的数据为:
name age address
bingying 20 四川
bygg 20 重庆

一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@yahoo.com.cn
2007-1-24 20:39
cydesign
Rank: 2
等级:注册会员
帖子:134
积分:1442
注册:2006-11-2

System.Data.SqlClient.SqlException: 对象名 'tbTest' 无效。

tbTest是什么来的?应该改为什么呢?

[此贴子已经被作者于2007-1-24 21:46:11编辑过]

2007-1-24 21:43
bygg
Rank: 12Rank: 12Rank: 12
来自:乖乖的心中
等级:版主
威望:170
帖子:9783
积分:97459
注册:2006-10-23

tbTest 是数据库中的表.
也就是将EXCEL数据添加的那张表.

一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@yahoo.com.cn
2007-1-24 22:12
cydesign
Rank: 2
等级:注册会员
帖子:134
积分:1442
注册:2006-11-2

行了!太感谢bygg版主了!历时1个多月的问题解决了!哈哈!

2007-1-24 22:23
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.072171 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved