| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1379 人关注过本帖
标题:续:关于Excel导入到Sql Server2000的问题
只看楼主 加入收藏
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
 问题点数:0 回复次数:9 
续:关于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-01-24 02:42
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 

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

2007-01-24 02:46
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
晕了,这些代码为什么不写到后台里面去呢?
写在这里面...别人都可以看到你的数据库.......

飘过~~
2007-01-24 09:39
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 

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

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

2007-01-24 14:31
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 
- -!
2007-01-24 17:39
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 

[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编辑过]


飘过~~
2007-01-24 20:37
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
excel 里面的数据为:
name age address
bingying 20 四川
bygg 20 重庆

飘过~~
2007-01-24 20:39
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 
System.Data.SqlClient.SqlException: 对象名 'tbTest' 无效。

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

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

2007-01-24 21:43
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
tbTest 是数据库中的表.
也就是将EXCEL数据添加的那张表.

飘过~~
2007-01-24 22:12
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 

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

2007-01-24 22:23
快速回复:续:关于Excel导入到Sql Server2000的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039298 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved