C# Can';无法从CSV读取数据

C# Can';无法从CSV读取数据,c#,asp.net,csv,datatable,C#,Asp.net,Csv,Datatable,我随后用以下代码将CSV读入一个数据表: private OleDbConnection CNN = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Directory.GetCurrentDirectory()+";Extended Properties=\"Text;HDR=Yes\""); private OleDbCommand CMD; p

我随后用以下代码将CSV读入一个
数据表

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
放在根目录下,并尝试执行以下操作,但没有效果

  • 数据源
    更改为
    本地主机
    (本地主机)
    ~
    ~\

  • Report.csv
    更改为
    Report

  • 最后将
    数据源
    更改为
    目录.GetCurrentDirectory()
    ,以使其正确连接

  • 问题:它不能找到
    Report.csv

    我希望这是一个网页,所以我需要的是一种方法,让OLEDB连接连接到本地主机,并指向根目录

    如果有人能教我怎么做那就太好了

    有人请这么好心,告诉我我哪里做错了,如何正确设置它


    非常感谢

    很可能是路径问题。您可以尝试执行以下操作:

    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);
    }
    
    更新:

    您可以使用
    HttpContext.Current.Server.MapPath(“~”)
    ,而不是
    Directory.GetCurrentDirectory()
    ,它将给出当前根目录的路径

    如果您的网站位于:

    C:\Web\shop
    
    您正在访问以下网页:


    很可能,这是一个路径问题。您可以尝试执行以下操作:

    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);
    }
    
    更新:

    您可以使用
    HttpContext.Current.Server.MapPath(“~”)
    ,而不是
    Directory.GetCurrentDirectory()
    ,它将给出当前根目录的路径

    如果您的网站位于:

    C:\Web\shop
    
    您正在访问以下网页:


    根目录GetCurrentDirectory()。将它放在'c:\'中,并将代码更改为匹配的,并确保它有效。检查
    目录.GetCurrentDirectory()返回的值,并将其存储在那里。你似乎只是希望你把文件放在正确的地方。谢谢你的建议。但请注意,我的标签包括ASP.net!我打算将其发布为一个网站,因此不幸的是,解决方案没有放在C:.目录中那么简单。GetCurrentDirectory()可能会给出当前asp.net网页所在的目录。OK,让我试试!谢谢根目录GetCurrentDirectory()。将它放在'c:\'中,并将代码更改为匹配的,并确保它有效。检查
    目录.GetCurrentDirectory()返回的值,并将其存储在那里。你似乎只是希望你把文件放在正确的地方。谢谢你的建议。但请注意,我的标签包括ASP.net!我打算将其发布为一个网站,因此不幸的是,解决方案没有放在C:.目录中那么简单。GetCurrentDirectory()可能会给出当前asp.net网页所在的目录。OK,让我试试!谢谢可能还有权限问题。谢谢!这就解决了!但是编码太离谱了!让我去看看能不能找到什么!一个参考链接将不胜感激!看看它是否有用:(用4张赞成票参考答案)…我通过在连接字符串的
    扩展属性下添加
    CharacterSet=65001
    解决了这个问题!可能还有权限问题。谢谢!这就解决了!但是编码太离谱了!让我去看看能不能找到什么!一个参考链接将不胜感激!看看它是否有用:(用4张赞成票参考答案)…我通过在连接字符串的
    扩展属性下添加
    CharacterSet=65001
    解决了这个问题!