我创建一个FileUpload控件, 让用户上传一个csv格式的文件,然后将文件预存到服务器下的temp文件夹中,然后想通过逐行读取csv中的数据,来更新数据库,但每次执行到adapter.Fill(dt_Bugdet_Packing_List)这行代码时,就提示:'D:\Projects\temp\Buget_Packing_List.csv'不是一个有效的路径.确定路径名称拼写是否正确,以及是否连接到文件存放的服务器.注:D:\Projects\是我的项目根目录.文件'D:\Projects\temp\Buget_Packing_List.csv'这个路径也是正确的.
        if (FileUpload1.HasFile)
        {
            FileUpload1.PostedFile.SaveAs(Server.MapPath("~/temp/Bugdet_Packing_List.csv"));
            string str_Conn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;HDR=YES;FMT=TabDelimited'", Server.MapPath("~/temp/Bugdet_Packing_List.csv"));
            string cmdText = "SELECT * FROM Bugdet_Packing_List.csv";
            System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(cmdText, str_Conn);
            DataTable dt_Bugdet_Packing_List = new DataTable();
            adapter.Fill(dt_Bugdet_Packing_List);
            gv_Update_Budget_Packing_List.DataSource = dt_Bugdet_Packing_List;
        }

解决方案 »

  1.   

    Extended Properties=Excel 8.0;
      

  2.   

    只给csv文件所在的路径(去除文件名后的路径)即可,在查询的时候将表名称条件为csv的文件名(只是文件名,不是全路径)
     string csvDir = @"C:\test1.xls";
    if (csvDir.Trim().ToUpper().EndsWith("CSV"))
    {
     int ipos = csvDir.LastIndexOf("\\");
     string filePath = csvDir.Substring(0, ipos + 1);
     string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath   + ";Extended Properties='text;HDR=YES;FMT=Delimited;'";
    string commandText = "select * from " + csvDir.Replace(filePath, "");
    }