【问题标题】:Ignoring last lines in CSV using Filehelpers if they aren't input如果未输入,则使用 Filehelpers 忽略 CSV 中的最后一行
【发布时间】:2013-11-12 15:39:54
【问题描述】:

我使用 FileHelpers 构建了一个程序来解析 CSV 文件,它的效果非常好,但我遇到了问题。 一些文件(但不是全部)最后有许多额外的行,其中包含与实际字段无关的信息。

像这样

...
31,4104019, ,,1043,,,0,,Ventas Total Credito,1,1,277.98,0,0,0,0,21.5040000000,V,
31, ,11212302,,1043,,,0,,Ventas Total Credito,1,1,33.28,0,0,0,0,21.5040000000,V,
31, ,11212307,,1043,,,0,,Ventas Total Credito,1,1,277.98,0,0,0,0,21.5040000000,V,

;Importado="01/11/2013"
 //blank line here too

我知道 FileHelpers 有

[IgnoreLast(3)] 
public class whatever...

选项,但由于只有部分文件有额外的 3 行,因此对所有文件使用此选项可能会导致某些文件忽略最后 3 条记录。

有没有办法告诉它何时忽略一行?还是我应该先单独阅读文件并自己删除这些行?

【问题讨论】:

  • 你检查FileHelperAsyncEngine.ReadNext方法和BeforeReadRecord事件设置e.SkipThisRecord = true;
  • 我喜欢 beforereadrecord 的想法,我会研究一下。如果您有任何使用方法的示例,我将不胜感激!
  • 对不起,我刚刚在他们的文档中得到了这个。他们有样品。看看那个

标签: c# csv filehelpers


【解决方案1】:

您可以使用BeforeReadRecord事件或在记录INotifyRead接口中实现,更简单。

在这两种情况下都使用 e.SkipThisRecord = true;在需要丢弃的情况下

【讨论】:

  • 很抱歉,我查看了文档和帮助文件,如果您能提供一个对您有帮助的简单示例,则没有关于如何使用 BeforeReadRecord 的示例。
  • 什么是e?我尝试了引擎和结果,但都没有这个属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多