1

我正在使用 FileHelpers Library 2.0 并使用 ExcelStorage 类从 excel 文件中读取数据。

我有那些课

[DelimitedRecord("|")]
public sealed class ServicoOutro
{
    [FieldTrim(TrimMode.Both)]
    [FieldConverter(typeof(MyConverter))] 
    internal Int32 srv_tx_iva;
}

    public class MyConverter : ConverterBase
    {
        public override object StringToField(string from)
        {
            return Convert.ToString(from).Replace("%", "");
        }

        public override string FieldToString(object fieldValue)
        {
            string str = Convert.ToString(fieldValue);

            return str.Replace("%", "");
        }
    }

当从 excel 文件中读取数据时:

ExcelStorage pvrOs = new ExcelStorage(typeof(ServicoOutro));
pvrOs.FileName = "fileName.xlsx";
pvrOs.StartRow = 2;
ServicoOutro[] resCc = (ServicoOutro[])pvrOs.ExtractRecords();

不调用 MyConverter 类的方法。

谁能帮我。

谢谢

4

1 回答 1

1

MyConverter对于 Int32 类型的字段不正确。

导入时使用StringToField覆盖。它返回一个类型object,该类型必须与目标字段的类型匹配,在您的情况下为Int32.

导出时使用FieldToString()覆盖。它告诉引擎在转换with value时如何格式化string输出。你可以忽略它。objectfieldValue

类似于以下内容

public class MyConverter : ConverterBase
{
    public override object StringToField(string from)
    {
        // you might like to check for nulls first...
        string output = from.Replace("%", "");
        // return Int32 because srv_tx_iva is Int32
        return Convert.ToInt32(output); 
    }

    public override string FieldToString(object from)
    {
        return from.ToString();
    }
}
于 2013-05-20T13:17:37.623 回答