无法读取CSV

时间:2019-01-24 01:00:12

标签: c# asp.net csv datatable

我跟随Jim Scott's instruction用以下代码将CSV读入DataTable

private OleDbConnection CNN = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Directory.GetCurrentDirectory()+";Extended Properties=\"Text;HDR=Yes\"");
private OleDbCommand CMD;
private OleDbDataAdapter ADT;
private DataTable DT=new DataTable();

protected void Page_Load(object sender, EventArgs e)
{
    CNN.Open();
    CMD = new OleDbCommand(@"select * from [Report.csv]", CNN);
    ADT = new OleDbDataAdapter(CMD);
    ADT.Fill(DT);
}

我已经将Report.csv放在了根目录下,并尝试了以下操作!

  1. Data Source 更改为localhost(localhost)~~\\

  2. Report.csv更改为Report

  3. 最后将 Data Source 更改为Directory.GetCurrentDirectory(),以使其正确连接。

问题:找不到,找不到Report.csv

  

我希望这是一个网页,所以我需要一种OleDbConnection连接到 localhost 并指向根目录的方法!

     

如果有人能教我该怎么做会很好!

请有人告诉我我在哪里做错了以及如何正确设置它!

非常感谢!

1 个答案:

答案 0 :(得分:3)

最有可能是路径问题。您可以尝试执行以下操作吗?

protected void Page_Load(object sender, EventArgs e)
{
    CNN.Open();
    string fileName = "C:\Users\username\Desktop\Report.csv";
    string sqlQuery = @"select * from [" + fileName + "]";
    CMD = new OleDbCommand(sqlQuery, CNN);
    ADT = new OleDbDataAdapter(CMD);
    ADT.Fill(DT);
}

更新

您可以使用Directory.GetCurrentDirectory()而不是HttpContext.Current.Server.MapPath("~")来提供当前根目录的路径。

如果您的网站位于:

C:\Web\shop

您正在访问以下网页:http://localhost:8080/Application/users/userdetails.aspx

 1. Server.MapPath(".") returns C:\Web\shop\users 
 2. Server.MapPath("~") returns C:\Web\shop\