标签: filehelpers

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
查看次数

当第一个单元格为空时,Filehelpers ExcelStorage.ExtractRecords失败

当要使用ExcelStorage.ExtractRecords导入的Excel工作表的第一个单元格为空时,该过程将失败.IE浏览器.如果数据从第1行第2行开始,如果单元格(2,1)具有空值,则该方法失败.

有人知道如何解决这个问题吗?我已经尝试将FieldNullValue属性添加到映射类中,但没有运气.

是一个示例项目,显示有问题的代码

希望有人可以帮助我或指出一些方向.

谢谢!

vb.net asp.net excel filehelpers

5
推荐指数
1
解决办法
2106
查看次数

如何为FileHelpers元素类的字段定义默认值

我正在尝试加载CSV文件(delims是';',引号是''').

我已成功创建了所有内容(向导工具很棒),但有一件事我无法找到解决方案.

基本上,我有一个整数(System.Int32)列.理论上,大多数记录在该列中将具有正整数值.但是,有时我可能会在该列中遇到值"N/A".我想要实现的是,当FileHelpers在该列中遇到"N/A"时,它会分配一个默认值(-1可以正常工作).

有谁知道这是否可能?

PS:我可能需要为System.DateTime字段做同样的事情(有时候它也可能有"N/A").

.net c# filehelpers

5
推荐指数
2
解决办法
2419
查看次数

FieldConverter ConverterKind.Date"dd/MM/yyyy"异常

我尝试读取csv文件.我的第五个记录是一个日期:03/11/2008

这是我的一段代码:

    [FieldConverter(ConverterKind.Date, "dd/MM/yyyy")]
    public DateTime datum_5;
Run Code Online (Sandbox Code Playgroud)

我的代码崩溃了:

Result[] results= (Result[])engine.ReadFile(@"..\Data\expo.txt");
Run Code Online (Sandbox Code Playgroud)

并且有以下例外:行:1.列:41.字段:datum_5.错误将'03/11/2008'转换为类型:'DateTime'.使用格式:'dd/MM/yyyy'

当我这样做:

[FieldConverter(typeof(ConvertDate))]

        public DateTime datum_5;
Run Code Online (Sandbox Code Playgroud)

有了这个:

internal class ConvertDate : ConverterBase
   {

       /// <summary>
       /// different forms for date separator : . or / or space
       /// </summary>
       /// <param name="from">the string format of date - first the day</param>
       /// <returns></returns>

       public override object StringToField(string from)
       {
           DateTime dt;

           if (DateTime.TryParseExact(from, "dd.MM.yyyy", null, DateTimeStyles.None, out dt))
               return dt;

           if (DateTime.TryParseExact(from, "dd/MM/yyyy", null, DateTimeStyles.None, out dt))
               return dt;

           if …
Run Code Online (Sandbox Code Playgroud)

.net c# csv filehelpers datetime

5
推荐指数
1
解决办法
3464
查看次数

FileHelpers库可以编写包含可空字段的类以及读取它们吗?

我正在使用FileHelpers库的2.0版,它被记录为能够处理.NET 2.0 Nullable类型.

我正在使用文档中示例中给出的代码:

[DelimitedRecord("|")]   
public class Orders   
{   
    public int OrderID;   

    public DateTime? OrderDate;   

    [FieldConverter(ConverterKind.Date, "ddMMyyyy")]     
    public DateTime? RequiredDate;   

    public int? ShipVia;   
}   
Run Code Online (Sandbox Code Playgroud)

使用FileHelperEngine,我可以成功读入一个没有OrderDate,RequiredDate或ShipVia字段值的文件.该文件看起来像:

1 |||

但是,我无法将生成的Orders []写出到文件中 - 库会抛出NullReferenceException,堆栈跟踪如下:

位于FileHelpers.Field上的FileHelpers.FieldBase.BaseFieldString(Object fieldValue)中的FileHelpers.FieldBase.AssignToString(StringBuilder sb,Object fieldValue)位于FileHelpers的FileHelpers.ConvertHelpers.CultureConverter.FieldToString(Object from) .RecordInfo.RecordToString(对象记录)在FileHelpers.FileHelperEngine 1.WriteStream(TextWriter writer, IEnumerable1记录,Int32 maxRecords)在FileHelpers.FileHelperEngine 1.WriteFile(String fileName, IEnumerable1记录,Int32 maxRecords)在FileHelpers.FileHelperEngine 1.WriteFile(String fileName, IEnumerable1记录)在TestingFileHelpers.Program.Main(String [] args)在C:位于System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)的System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,String [] args)中的\ dev\src\TestingFileHelpers\TestingFileHelpers\Program.cs:第19行System.Threading.ExecutionContext.Run上的System.Threading.ThreadHelper.ThreadStart_Context(Object state)中的.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()(Executi)System.Threading.ThreadHelper.ThreadStart()上的System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)中的onContext executionContext,ContextCallback回调,Object state,Boolean ignoreSyncCtx)

我敢肯定我必须在这里遗漏一些东西,但我无法弄清楚它是什么.任何帮助非常感谢.

c# filehelpers

5
推荐指数
1
解决办法
2707
查看次数

FileHelpers中的多个日期如何?

我想知道如何在文件管理器中执行多个日期?看来你必须指定你要支持的每种格式(有点糟糕......希望它可以处理更多基本格式).

   [FieldOrder(1), FieldConverter(ConverterKind.DateMultiFormat, "MM/dd/yyyy", "MM/d/yyyy", "M/d/yyyy","M/dd/yyyy")]
Run Code Online (Sandbox Code Playgroud)

这给了我一些

Error   35  Argument 1: cannot convert from 'FileHelpers.ConverterKind' to 'System.Type'    
Run Code Online (Sandbox Code Playgroud)

所以我似乎要做一些自定义转换或什么?它是否正确?

编辑

我使用的是2.9.9.0

选项

// Summary:
//     Indicates the FileHelpers.ConverterKind used for read/write operations.
//
// Remarks:
//     See the Complete attributes list for more information and examples of each
//     one.
[AttributeUsage(AttributeTargets.Field)]
public sealed class FieldConverterAttribute : Attribute
{
    // Summary:
    //     Indicates the FileHelpers.ConverterKind used for read/write operations.
    //
    // Parameters:
    //   converter:
    //     The FileHelpers.ConverterKind used …
Run Code Online (Sandbox Code Playgroud)

c# filehelpers

5
推荐指数
1
解决办法
2942
查看次数

使用FileHelper格式化属性

FileHelpers有一个很好的字段日期转换器:

[FieldConverter(ConverterKind.Date, "MM-dd-yyyy")] 
public DateTime MyDate;
Run Code Online (Sandbox Code Playgroud)

但FieldConverter不适用于属性.我必须处理使用属性的对象,所以我正在寻找这样的东西:

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

如何使用属性执行此操作?

c# csv filehelpers

5
推荐指数
1
解决办法
2125
查看次数

FileHelper转义分隔符

我正在使用FileHelper 2.0来解析我的csv数据.filehelper有没有可以正确处理转义分隔符的选项?它可以将字段标识为数据而不是分隔符.

我们的csv格式:使用\来转义逗号(,)

示例数据:

姓名,姓氏

尼科\,文件,opeka

当前代码:

[DelimitedRecord(",")] 
public class contactTemplate
{
  public string firstName;
  public string lastName;
}
Run Code Online (Sandbox Code Playgroud)

我如何获得firstName = nico,le和lastName = opeka.FileHelpers按逗号分割,现在返回:

firstName - > nico \

lastName - >,le,opeka

c# csv filehelpers

5
推荐指数
1
解决办法
3738
查看次数

文件助手中的可选引号

我最近的项目要求我阅读 csv 文件。人们引导我使用文件助手,因为“你不应该重新发明轮子”。但是,文档真的很烂,我似乎找不到处理可选引号的方法。这是我的 csv:

2734000585,IDR,04/04/2016,04/04/2016,0000000,1010,SETOR TUNAI,"783275305006511 VENDY",,"820,000.00","5,820,000.00"
Run Code Online (Sandbox Code Playgroud)

我不是在 csv 之上生成的人,它来自银行。正如您所看到的,他们的 csv 文件很糟糕并且有一些严重的问题。有些字符串用引号括起来,有些则不是。此外,货币值被编码为字符串。

我为它做了一个类:

using System;
using FileHelpers;

[DelimitedRecord(",")]

public class ImporBii
{
    public long RekNum;

    public string Currency;

    [FieldConverter(ConverterKind.Date, "dd/MM/yyyy")]
    public DateTime TransDate;

    [FieldConverter(ConverterKind.Date, "dd/MM/yyyy")]
    public DateTime RecordDate;

    public string Unused1;

    public int TransCode;

    public string TransCodeStr;

    public string Keterangan;

    [FieldConverter(ConverterKind.Decimal, "#,##0.00")]
    public decimal Debet;

    [FieldConverter(ConverterKind.Decimal, "#,##0.00")]
    public decimal Kredit;

    [FieldConverter(ConverterKind.Decimal, "#,##0.00")]
    public decimal Saldo;
}
Run Code Online (Sandbox Code Playgroud)

我认为 filehelpers 足够聪明,可以自己看到引号,但结果是彻底的灾难。请帮我。:-(

c# csv filehelpers

5
推荐指数
1
解决办法
890
查看次数

如何使 FileHelpers 忽略定义列之后的列?(即忽略最后的列)

假设我有以下 FileHelpers Record 定义:

[DelimitedRecord(",")]
[IgnoreEmptyLines]
public class TestRecord
{
    [FieldCaption("A")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string A;

    [FieldCaption("B")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string B;

    [FieldCaption("C")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string C;
}
Run Code Online (Sandbox Code Playgroud)

我只对 A、B、C 列感兴趣。它们后面的任何列都可以忽略。例如,我希望能够处理这样的数据:

A,B,C,D,E
TestA1,TestB1,TestC1,TestD1,TestE1
TestA2,TestB1,TestC1,TestD1,TestE1
Run Code Online (Sandbox Code Playgroud)

或者:

A,B,C,D
TestA1,TestB1,TestC1,TestD1
TestA2,TestB1,TestC1,TestD1
Run Code Online (Sandbox Code Playgroud)

或者:

A,B,C
TestA1,TestB1,TestC1
TestA2,TestB1,TestC1
Run Code Online (Sandbox Code Playgroud)

.net c# csv filehelpers

5
推荐指数
1
解决办法
666
查看次数

标签 统计

filehelpers ×10

c# ×9

csv ×5

.net ×3

asp.net ×1

comma ×1

datetime ×1

double-quotes ×1

excel ×1

vb.net ×1