标签: filehelpers

有没有办法使用FileHelpers库进行字段顺序?

我从nuget下载了FileHelpers,但我不确定这个功能是否不存在,或者我没有正确的版本或什么.

我一直在环顾四周,似乎FileHelpers可能有一个属性来指定字段顺序.

我下载了这个,但是当我在寻找nuget时,似乎还有另一个版本

c# filehelpers

7
推荐指数
1
解决办法
6641
查看次数

Filehelpers CSV解析.如何使用FieldQuoted属性?

我有一个看起来像这样的CSV:

a,b,c
a,b,c
a,"b,c",d
Run Code Online (Sandbox Code Playgroud)

我在带有属性的分隔类中标记第二个字段:

[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)]
public String ExchangeRate;
Run Code Online (Sandbox Code Playgroud)

但是第3行仍然将"b,c"解析为2个单独的值.

你知道我做错了什么吗?

谢谢

c# csv filehelpers parsing

7
推荐指数
1
解决办法
5602
查看次数

如何在FileHelper类中处理SQLDecimal数据类型的空值

我试图加载使用FileHelpers文件(已经喜欢它,除了这一个问题:P)我有CSV文件数据保存到数据库中,所以我使用的是SQLDECIMAL类型来存储的CSV文件中的十进制值.

[FileHelpers.FieldOptional()]
[FileHelpers.FieldConverter(typeof(SqlDecimalConverter))]
public SqlDecimal Rate;
Run Code Online (Sandbox Code Playgroud)

所有这一切都正常,直到我有一个FixRate1的空值.这标记为错误.

"警告异常:空值发现班上场'率'SWTrade’你必须指定一个FieldNullValueAttribute因为这是一个值类型和不可阻挡的为空."

我试图把[FileHelpers.FieldNullValue(SqlDecimal.Null)],但它显然抛出一个错误.

属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

即使我在SqlDecimalConverter类中重写FieldToString方法,在读取数据时也不会调用该函数.

那么,在这种情况下,有没有办法可以为Rate数据分配任何空值或甚至其他一些硬编码值,然后我可以用我自己的逻辑中的null direclty替换它?

如果您需要更多详细信息,请告诉我们.提前致谢.

c# filehelpers types

6
推荐指数
2
解决办法
4725
查看次数

使用FileHelpers动态创建CSV文件

FileHelpers支持名为"RunTime Records"的功能,当您在运行时之前不知道布局时,可以将CSV文件读入DataTable.

是否可以使用FileHelpers以相同的方式在运行时创建CSV文件?

根据某些用户输入,必须创建的CSV文件将具有只能在运行时才能知道的不同字段.我可以按照阅读部分的描述为FileHelper引擎创建所需的Type,但我无法弄清楚我的数据需要写入的格式.

var engine = new FileHelpers.FileHelperEngine(GenerateCsvType());

engine.WriteStream(context.Response.Output, dontKnow);
Run Code Online (Sandbox Code Playgroud)

编辑

或者,任何人都可以建议一个好的CSV库,可以创建一个CSV文件,直到运行时才知道它的字段?例如,从DataTable创建CSV文件.

csv filehelpers

6
推荐指数
1
解决办法
4543
查看次数

使用Reflection构建类(构建动态FileHelper类)

我可以使用反射动态构建如下所示的类吗?没有方法,只有公共变量,有些有自定义属性.

是否需要.Emit方法(从我所看到的,"Emit"看起来有点挑战).

我正在使用www.FileHelpers.net上的软件,它需要一堂课.我的所有文件定义都在数据库表中,我想让所有内容更加动态(即当文件中出现新列时,代码不会更改).

[FileHelpers.DelimitedRecord(",")]
public class FileRow
{
    [FileHelpers.FieldQuoted('"', QuoteMode.OptionalForBoth)] 
    public string Borrower_First_Name;
    [FileHelpers.FieldQuoted('"', QuoteMode.OptionalForBoth)] 
    public string Borrower_Last_Name;
    public string Borrower_Email;
}
Run Code Online (Sandbox Code Playgroud)

更新1:根据Vlad的回答我需要引用DLL,这是我如何做到的:

    // need to reference the FileHelpers.dll from our own .exe directory 
    string diskFilenameFileHelpersDLL = 
        System.IO.Path.GetDirectoryName(
           System.Reflection.Assembly.GetExecutingAssembly().Location) + 
           @"\FileHelpers.dll";
Run Code Online (Sandbox Code Playgroud)

更新2:此外,在做了Vlad建议之后,这就是我调用FileHelper并循环结果的方法.我可能会将数据传输到列表中.

    Assembly assembly = compiledResult.CompiledAssembly;

    // Simple Data Test 
    lineContents = "John,Doe,jd123456@yahoo.com";
    FileHelperEngine engine = new FileHelperEngine(assembly.GetType("FileRow"));
    // FileRow[] FileRowArray = (FileRow[])engine.ReadString(lineContents);
    Object[] FileRowArray = engine.ReadString(lineContents);
    Object myObject = FileRowArray[0];  // only 1 row of data in …
Run Code Online (Sandbox Code Playgroud)

c# reflection filehelpers class reflection.emit

6
推荐指数
1
解决办法
3573
查看次数

使用没有类型的FileHelpers

我有一个从另一个系统导出的CSV文件,其中列顺序和定义可能会更改.我发现FileHelpers非常适合读取csv文件,但是除非在编译应用程序之前知道列的顺序,否则它似乎无法使用它.我想知道它是否可以以非类型的方式使用FileHelpers.目前我正在使用它来读取文件但是我正在手工做的其他事情,所以我有一个类:

[DelimitedRecord(",")]
public class CSVRow
{
    public string Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这意味着每一行都在Content其中,这很好,因为我已经分割了行等,但由于文件中固有的逗号,我现在遇到此方法的问题,因此一行可能是:

"something",,,,0,,1,,"something else","","",,,"something, else"
Run Code Online (Sandbox Code Playgroud)

我对这个字符串上的逗号的简单拆分不起作用,因为在"某些东西"中有一个逗号,它会被拆分.显然,FileHelpers之类的东西非常方便,解析这些值并考虑引号.那么有可能以这种方式使用FileHelpers,没有已知的列定义,或者至少能够传递csv字符串并获取值列表,或者是否有任何好的库来执行此操作?

c# csv filehelpers

6
推荐指数
1
解决办法
3718
查看次数

如何让FileHelpers在每条记录上设置行号?

有没有机会让MultiRecordEngine为每条记录设置行号?我阅读了文档,发现Engine有一个LineNumber属性,但我找不到使用它的方法.

我想拥有什么:即:

[FixedLengthRecord]
    public class Employee
    {
        public int LineNumber; // <-- setup by the engine while reading the file

        [FieldFixedLength(1)]
        public string Type = "2";

        [FieldFixedLength(6)]
        [FieldTrim(TrimMode.Left, "0")]
        public int ID;
     }
Run Code Online (Sandbox Code Playgroud)

或者......我可以依赖Engine.ReadFile创建的集合中的记录索引吗?即:

  static void Main(string[] args)
    {

        var engine = new MultiRecordEngine(CustomSelector, _types);
        var obj = engine.ReadFile("order.txt");

        // obj.GetValue(100) returns same record found on the 101th line in the file?
    }
Run Code Online (Sandbox Code Playgroud)

filehelpers c#-4.0

6
推荐指数
1
解决办法
1454
查看次数

忽略FileHelpers中的属性

我正在使用FileHelpers将模型导出为CSV.它有[FieldNotInFile()]属性,在导出时排除字段,但我需要使用属性,因为我需要一些其他属性以及另一个仅使用属性的第三方库.

有没有办法让FileHelpers忽略属性?

c# filehelpers attributes

6
推荐指数
2
解决办法
4940
查看次数

FileHelpers - 'FieldConverter'在此声明类型上无效

我正在尝试通过FieldConverter属性设置我正在读取的CSV文件的日期格式,但我收到以下错误 -

属性"FieldConverter"在此声明类型上无效.它仅对"字段"声明有效.

知道为什么会发生这种情况以及如何解决这个问题吗?

[DelimitedRecord(",")]
[IgnoreFirst(1)]
public class SomeViewModel
{   
    public int account { get; set; }

    [FieldConverter(ConverterKind.Date, "dd-MM-yyyy")]
    public DateTime doc_dte { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# csv asp.net-mvc filehelpers

6
推荐指数
1
解决办法
1539
查看次数

FileHelpers 在字段中引用和逗号

我有一个 csv 文件,我正在使用 FileHelpers 进行解析,并且我遇到了引号和逗号都可以出现在字段中的情况:

逗号:

323,"PC","28/02/2014","UNI001","5000",0,"Return","Returned Goods, damaged",88.00,15.40,"T1","N",0.00,"R","-",
Run Code Online (Sandbox Code Playgroud)

引用

 148,"SI","13/01/2014","CGS001","4000",1,"5","17" Monitor",266.00,45.39,"T1","Y",311.39,"R","-", 
Run Code Online (Sandbox Code Playgroud)

我的班级是:

[DelimitedRecord(",")]
public class Transaction
{
    public int TRAN_NUMBER;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string TypeText;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string DATE;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string TransactionAccount;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string NOMINAL_CODE;

    public int DEPT_NUMBER;

    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string INV_REF;

    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string DETAILS;

    public string NET_AMOUNT;
    public string TAX_AMOUNT;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string TaxCodeName;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string PAID_FLAG;

    public string AMOUNT_PAID;

    [FieldQuoted('"', QuoteMode.OptionalForBoth)]
    public string VatReconText;
    [FieldQuoted('"', QuoteMode.OptionalForBoth)] …
Run Code Online (Sandbox Code Playgroud)

c# filehelpers comma double-quotes

6
推荐指数
1
解决办法
1957
查看次数