【问题标题】:C# CsvHelper - Missing CsvReader.csC# CsvHelper - 缺少 CsvReader.cs
【发布时间】:2015-07-23 13:43:55
【问题描述】:

我正在使用 CsvHelper 将 .CSV 文件读入 html 表。我正在使用 .NET MVC 4 和 CsvReader 2.13.2.0。我尝试了不同版本的 CsvHelper,但在这一行仍然遇到相同的错误:

var csv = new CsvReader(new StreamReader(path));

错误:

我查看了 CsvHelper 文件夹,其中只有一个 .dll、调试数据库和一个 XML 文档。有谁知道为什么这个文件不存在,或者我是否使用了贬值的 CsvHelper 方法或其他东西。谢谢!

【问题讨论】:

  • 错误不是该文件丢失。它只是提到文件丢失,因此无法显示异常发生位置的相关源信息。显示完整的异常消息。
  • 这是我可以从错误中获得的最多信息。如果它甚至没有击中我的捕获并且只显示丢失的文件错误,我将如何找到完整的异常消息
  • 我想如果你在找不到文件后让它继续,你会得到异常。
  • 另外,我很确定异常必须与文件路径有关。要么它被锁定并且您无法从中读取,要么很可能无法找到该文件。尝试使用文件的绝对路径。如果使用相对路径,则路径从运行可执行文件的位置开始。在调试的情况下,通常是`\path\to\project\bin\debug`
  • 很容易找到,把StreamReader的创建放在它自己的行上。 var reader = new StreamReader( path ); var csv = new CsvReader( reader ); 我想你会发现异常来自流阅读器行。

标签: c# asp.net-mvc class csv


【解决方案1】:

我知道这不能直接回答您的问题,但我会研究 LinqToCSV(您可以在 Nuget 上找到它)。有了它,您可以使用它将 csv 文件序列化为对象并使用 linq 对其进行迭代。它非常易于使用,并且由于它是一个包,您无需担心 dll 管理或不推荐使用的代码。我以前用过它,我不记得确切的语法,但加载文件是这样的:

var cc = new CsvContext();
cc.Read<YourModel>(filePath);

这会将 csv 文件读入您​​的 C# 对象。然后你就可以像使用任何其他对象一样使用它了。

【讨论】:

  • 感谢您的建议,立即查看
  • 仅供参考:CsvHelper 也是这样做的,也是一个 NuGet 包。
【解决方案2】:

我遇到了同样的问题。但是我忘了用 try-/catch 来包围它以查看根异常:-)。简单!

try 
{
   var csv = new CsvReader(new StreamReader(path));
}
catch (UnauthorizedAccessException e)
{
   //handle it
}
catch (System.Exception e)
{
   //handle it
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多