c#读取csv文件不提供有效路径

sea*_*ean 26 c# csv oledb

我似乎无法使用以下连接字符串读取.csv文件:

var fileName = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Uploads\\countrylist.csv");
string connectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""text;HDR=YES;FMT=Delimited""", fileName);
OleDbConnection oledbConn = new OleDbConnection(connectionString);
oledbConn.Open();
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

'D:\ arrgh\arrgh\Uploads\countrylist.csv'不是有效路径.确保路径名拼写正确,并且您已连接到文件所在的服务器.

我确认文件在那里.这里发生了什么?

sea*_*ean 58

好吧,我进一步挖了一下,似乎我的连接字符串是错误的.对于CSV文件,您不指定实际文件名,而是指定它所属的目录,例如.

var fileName = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Uploads\\");
string connectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""text;HDR=YES;FMT=Delimited""", fileName);
OleDbConnection oledbConn = new OleDbConnection(connectionString);
oledbConn.Open();
var cmd = new OleDbCommand("SELECT * FROM [countrylist.csv]", oledbConn);
Run Code Online (Sandbox Code Playgroud)

并在SelectCommand中指定文件名.这是多么奇怪的做法.它现在对我有用.

  • 另请注意,如果您使用Microsoft Jet OLEDB驱动程序读取CSV文件,则无法读取其文件名中包含多个点的任何CSV文件.也就是说,"filename.csv"可以工作,但"file.name.csv"不会. (6认同)
  • @ TommyO'Dell或只是`Path.GetFileName(csvPath)` (4认同)