在WEB页面上将excel 导入sql数据库时出错。

lxmfll2000 2006-03-15 09:24:54
刚接手一个网站。有一个将用户列表导入数据库的功能。当然是由管理员登录才可以使用。不知道原来好用不?现在不是行了。一点提交就出现如下错误。
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();
}
...全文
276 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwan 2006-06-29
  • 打赏
  • 举报
回复
老子也是用的这个方法,但用户数据一多,就经常出现无法读取电子表格的错误
b_li 2006-03-31
  • 打赏
  • 举报
回复
我同意,办法很好
songxiaozhao 2006-03-29
  • 打赏
  • 举报
回复
string fileName=Server.MapPath("")+"\\upload"+"\\test.xls";
myFile.PostedFile.SaveAs(fileName);
songxiaozhao 2006-03-29
  • 打赏
  • 举报
回复
先把它的文件上传到服务器来,然后再导入到你的数据库
这样就没有权限的问题了
succinite 2006-03-16
  • 打赏
  • 举报
回复
string StrSql="select * from ["+StyleSheet+"$]"; 看EXCAL文件是不是还有个StyleSheet2,一般情况下默认是StyleSheet1,如果有2个或多个的时候。导入的时候有可能出错。
lxmfll2000 2006-03-15
  • 打赏
  • 举报
回复
各位大哥帮帮忙呀!!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧