2012-03-16 69 views
1

我发现了一个非常棒的库来读取CSV文件 - FileHelpers,但我有一个奇怪的问题。我希望得到一些帮助。提前致谢 !FileHelpers library CSV - 为什么总是从最后一列删除一个字母?

映射后,我总是从右边的最后一列中删除一个字母。

我使用FileHelpers.dll版本2.0.0 - DOTNET的2.0从FileHelpers_2_0_0_bin_docs_wizard.zip

对于例如我有这样一个CSV(一些列报价,但有些没有,它可能会改变)

name;surname 
"John";Smith 
"Jack";Baker 

而且阅读文件,后:

FileHelperEngine<SemicolonsRow> engine = new FileHelperEngine<SemicolonsRow>(); 
engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue; 

res = engine.ReadFile("C:\\a.txt"); 

if (engine.ErrorManager.ErrorCount > 0) 
engine.ErrorManager.SaveErrors("C:\\Log.txt"); 

我得到这个:

res[0].Col0 with name 
res[0].Col1 with surnam (lack of e at the end) 
res[1].Col0 with John 
res[1].Col0 with Smit (lack of h at the end) 

当我读取这样的文件:

name;surname;country 
"John";Smith;USA 
"Jack";Baker;Canada 

问题是在第三列 - 所以我得到:countr US Canad

我FileHelpers类:

[IgnoreEmptyLines()] 
[DelimitedRecord(";")] 
public sealed class SemicolonsRow 
{ 
    [FieldOptional()] 
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)] 
    public String Col0; 

    [FieldOptional()] 
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)] 
    public String Col1; 

    [FieldOptional()] 
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)] 
    public String Col2; 

    [FieldOptional()] 
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)] 
    public String Col3; 
} 

任何想法?

+0

当源文件不包含带引号的字段时会发生这种情况吗? – 2012-03-16 22:55:13

+0

@Simon Whittemore - 是的,当我的所有专栏没有任何引号时,我也会得到一些切词。 – Barney 2012-03-17 00:23:09

回答

5

这是一个老问题与opcional字段和被释放后解决,但我们从来没有得到时间的充分释放一些其他条件

你可以从这里下载最新稳定版本解决的问题:

http://teamcity.codebetter.com/viewLog.html?buildId=lastSuccessful&buildTypeId=bt66&tab=artifacts&guest=1

+1

感谢您的回复。 新版本解决了我的问题,所以感谢专业支持。我建议FileHelpers库有一个明确的良知:) – Barney 2012-03-18 22:55:53

+2

Marcos,如果你把链接放到filehelpers.com网站上的Teamcity构建中,那将是非常棒的。 – 2012-04-11 19:11:33

2

这听起来像库期待出现的最后一个字符的分隔符。 请与图书馆的作者联系。

+0

任何想法如何解决这个问题? – Barney 2012-03-17 18:37:08

+0

那么,这个项目是开源的,包含单元测试,所以我会从那里开始。 – 2012-03-17 19:20:49

相关问题