在WEB页面上将excel 导入sql数据库时出错。
刚接手一个网站。有一个将用户列表导入数据库的功能。当然是由管理员登录才可以使用。不知道原来好用不?现在不是行了。一点提交就出现如下错误。
The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\Administrator\QuestUsers.xls'. It is already opened exclusively by another user, or you need permission to view its data.
我在网上找了相关的信息。有一种方法是可行的。就是把要导入的文件的“安全”选项里加入“everyone”用户,并给予读写的权限。这样确实可以。可是用户不同意。现在傻了。请高手指教!
原代码如下:
public void LoadData(string FileSource,string StyleSheet)
{
string strCon ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + @FileSource + ";Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
myConn.Open(); //打开数据链接,得到一个数据集
DataSet myDataSet = new DataSet(); //得到自己的DataSet对象
string StrSql="select * from ["+StyleSheet+"$]";
OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql,myConn); //创建一个 DataSet对象
myCommand.Fill(myDataSet,"["+StyleSheet+"$]");
myCommand.Dispose();
DataTable DT=myDataSet.Tables["["+StyleSheet+"$]"];
myConn.Close();
myCommand.Dispose();
//moduleSettings=ModuleConfig.GetSettings();
string strConn=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];//moduleSettings.ConnectionString;
conn=new SqlConnection(strConn);
conn.Open();
//delete Usersdb data
string sql="delete Usersdb";
comm=new SqlCommand(sql,conn);
comm.ExecuteNonQuery();
comm.Dispose();
//======end
for(int j=0;j<DT.Rows.Count;j++)
{
string UserID=DT.Rows[j][0].ToString();
string EmailAddress=DT.Rows[j][1].ToString();
string FirstName=DT.Rows[j][2].ToString();
string LastName=DT.Rows[j][3].ToString();
string Address1=DT.Rows[j][4].ToString();
string Address2=DT.Rows[j][5].ToString();
string City=DT.Rows[j][6].ToString();
string State=DT.Rows[j][7].ToString();
string ZipCode=DT.Rows[j][8].ToString();
string HomePhone=DT.Rows[j][9].ToString();
string Password=DT.Rows[j][10].ToString();
string Country=DT.Rows[j][11].ToString();
string Admin=DT.Rows[j][12].ToString();
string strSql="insert into Usersdb(EmailAddress,FirstName,LastName,Address1,Address2,City,State,ZipCode,HomePhone,Password,Country,Admin) ";
strSql=strSql + "values('"+EmailAddress+"','"+FirstName+"','"+LastName+"','"+Address1+"','"+Address2+"','"+City+"','"+State+"','"+ZipCode+"','"+HomePhone+"','"+Password+"','"+Country+"','"+Admin+"')";
comm=new SqlCommand(strSql,conn);
comm.ExecuteNonQuery();
if (j==DT.Rows.Count-1)
{
Label1.Visible=true;
}
}
conn.Close();
}