日期:2014-05-18  浏览次数:20587 次

上传EXCEL,一直提示文件不存在,发现系统获取的路径有问题,如何解决?
下面这个是从网上下载的
  public DataSet ExecleDs(string filenameurl, string table)
  {
  string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
  OleDbConnection conn = new OleDbConnection(strConn);

  OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
  DataSet ds = new DataSet();
  odda.Fill(ds, table);

  return ds;

  }
////////

真正上传操作
string strpath = fu_Input.PostedFile.FileName.ToString(); ; //获取Execl文件路径
  string filename = fu_Input.FileName; //获取Execl文件名
  DataSet ds = ExecleDs(strpath, filename);
就在这儿出现错误,
会提示

Microsoft Jet 数据库引擎找不到对象'C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\书法教材征订单.xls'。请确定对象是否存在,并正确地写出它的名称和路径。 


不管你选择什么地方的东西上传,都会提示'C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\'目录下没有,确实没有呀,他的路径怎么老出错呢,不是我选择的上传文件的地址??


代码参考的这里的:http://www.cnblogs.com/boss504/articles/1182600.html

------解决方案--------------------
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";

改为
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + server.mappath(filenameurl)+ ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";

------解决方案--------------------
或将filenameurl指定为绝对定位路径:如F:\bak\a.cvs
------解决方案--------------------
先上传到服务器上,然后在读取服务器上的内容,然后再把服务器上的文件删除。你那没有上传到服务器上吧。
------解决方案--------------------
你先把
string strpath = fu_Input.PostedFile.FileName.ToString(); ; //获取Execl文件路径
string filename = fu_Input.FileName; //获取Execl文件名

这两个写死。

然后跑程序 如果不行的话 就是程序有问题。

上传是excel导入DataTable中的。

C# code
public void UploadInventoryData(string sheetName, string excelFile)
        {
            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 12.0;";
            string strExcel = "select * from [" + sheetName + "$]";
            DataSet ds = new DataSet();
            OleDbConnection conns = new OleDbConnection(strConn);
            conns.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, conns);
            adapter.Fill(ds, "res");
            conns.Close();
}