上传EXCEL,一直提示文件不存在,发现系统获取的路径有问题,如何解决?

时间:2021-04-29 15:19:00
下面这个是从网上下载的
    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

10 个解决方案

#1


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'";

#2


或将filenameurl指定为绝对定位路径:如F:\bak\a.cvs

#3


先上传到服务器上,然后在读取服务器上的内容,然后再把服务器上的文件删除。你那没有上传到服务器上吧。

#4


你先把
string strpath = fu_Input.PostedFile.FileName.ToString(); ; //获取Execl文件路径
  string filename = fu_Input.FileName; //获取Execl文件名

这两个写死。

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

上传是excel导入DataTable中的。

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();
}


前台调用的时候

UploadInventoryData("sheet名字", @"E:全路径");

试试

#5


Microsoft Jet 数据库引擎找不到对象'D:\web\上传照片,
有出现这个错误,我是要上传EXCEL

然后把EXCEL数据导入数据库:(

#6


引用 3 楼 pittroll 的回复:
先上传到服务器上,然后在读取服务器上的内容,然后再把服务器上的文件删除。你那没有上传到服务器上吧。



可能是这问题,我全参考那网站上的内容,运行不起来:(

#7


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

没有需要上传:(怎么把选择的EXCEL文件先上传到服务器,再导入呀,最后导入成功再删除?

#8


 fu_Input.SaveAs(path)这个函数是上传到服务器上的,path是上传到服务器上的路径。

#9


OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();//打开
  OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
  DataSet ds = new DataSet();
  odda.Fill(ds, table);
conn.Close();

#10


引用 9 楼 net5354 的回复:
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();//打开
  OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
  DataSet ds = new DataSet();
  odda.Fill(ds,……

我要如何知道我自己的Sheet1$是什么名字啊?这个sheet1$是什么意思呢?

#1


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'";

#2


或将filenameurl指定为绝对定位路径:如F:\bak\a.cvs

#3


先上传到服务器上,然后在读取服务器上的内容,然后再把服务器上的文件删除。你那没有上传到服务器上吧。

#4


你先把
string strpath = fu_Input.PostedFile.FileName.ToString(); ; //获取Execl文件路径
  string filename = fu_Input.FileName; //获取Execl文件名

这两个写死。

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

上传是excel导入DataTable中的。

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();
}


前台调用的时候

UploadInventoryData("sheet名字", @"E:全路径");

试试

#5


Microsoft Jet 数据库引擎找不到对象'D:\web\上传照片,
有出现这个错误,我是要上传EXCEL

然后把EXCEL数据导入数据库:(

#6


引用 3 楼 pittroll 的回复:
先上传到服务器上,然后在读取服务器上的内容,然后再把服务器上的文件删除。你那没有上传到服务器上吧。



可能是这问题,我全参考那网站上的内容,运行不起来:(

#7


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

没有需要上传:(怎么把选择的EXCEL文件先上传到服务器,再导入呀,最后导入成功再删除?

#8


 fu_Input.SaveAs(path)这个函数是上传到服务器上的,path是上传到服务器上的路径。

#9


OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();//打开
  OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
  DataSet ds = new DataSet();
  odda.Fill(ds, table);
conn.Close();

#10


引用 9 楼 net5354 的回复:
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();//打开
  OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
  DataSet ds = new DataSet();
  odda.Fill(ds,……

我要如何知道我自己的Sheet1$是什么名字啊?这个sheet1$是什么意思呢?