您的位置:首页 > 数据库

将Excel数据导入SQL Server数据库--2

2009-05-07 16:51 344 查看
在上一次实验中,尝试了使用连接服务器和即席查询实现将Excel中的数据导入到SQL Server2005的数据库中。

但是俗话说得好,计划赶不上变化,这不,变化来了。

在进一步的尝试中发现,使用即席查询等方式,极有可能出现错误,要么是SQL Server2005中外围配置的即席查询设置没开,要么就是Excel表从外界被打开无法读取数据。

还有一点的是,Excel文件必须和数据库在一台机器上(个人是这样认为的,不知道有没有解决办法),我可以把Excel文件上传到WEB服务器上,然后在删掉,但是不能保证WEB服务器和数据库服务器是一台机器啊,这样就没有办法了。

那么只有换一种思路了,使用程序来实现吧。

其实思路很简单,使用dataset!!!

代码如下:

public void Excel(string path)
{

string conStringExcel = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";
string sql = "select * from [Sheet1$]";

DataSet oleds = new DataSet();
OleDbDataAdapter oleda = new OleDbDataAdapter(sql, conStringExcel);
oleda.Fill(oleds);

SqlConnection conn = new SqlConnection(connstring);
SqlDataAdapter sqlda = new SqlDataAdapter("select * from school where 1=2", conn);
SqlCommandBuilder sqlcb = new SqlCommandBuilder(sqlda);
DataSet sqlds = new DataSet();

sqlda.Fill(sqlds);
for (int i = 0; i < oleds.Tables[0].Rows.Count; i++)
{
sqlds.Tables[0].Rows.Add(sqlds.Tables[0].NewRow());

for (int j = 0; j < oleds.Tables[0].Columns.Count; j++)
{

sqlds.Tables[0].Rows[i][j + 1] = oleds.Tables[0].Rows[i][j];
}
}
sqlda.Update(sqlds, "table");

}

其中,方法的参数为Excel的文件路径。connstring是连接SQL Server数据库的连接字符串。由于我的表是带有自动标识的主键的,所以不添加第一列。

个人感觉这种方式还是比较简单的,当然缺点是不够灵活。

希望园内众神冒出来批评指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: