【问题标题】:Mapping/Transformation to handle Enum model with LinqToExcel使用 LinqToExcel 处理枚举模型的映射/转换
【发布时间】:2014-05-02 11:31:16
【问题描述】:

我在处理要导入数据库的 Excel 文件的一列时遇到问题。该属性指的是 Enum 模型。我尝试将整数值(指 Enum 索引)或字符串值本身放入,但显然它不起作用。

我将如何使用(我假设)AddTransformation 方法来处理这个问题?

【问题讨论】:

    标签: c# asp.net-mvc enums linq-to-excel


    【解决方案1】:

    我能够通过将单元格中的值映射到转换函数中的枚举值来实现这一点:

    excel.AddTransformation<DataImportJob>(x => x.Status, cellValue =>
    {
        switch (cellValue)
        {
            case "Failed":
                return JobStatusType.Failed;
            case "InProgress":
                return JobStatusType.InProgress;
            case "Scheduled":
                return JobStatusType.Scheduled;
            case "Success":
                return JobStatusType.Success;
            default:
                return JobStatusType.Undefined;
        }
    });
    

    【讨论】:

      【解决方案2】:

      是的,试试AddTransformation 方法,看看是否可行。

      【讨论】:

      • 您好 Paul,感谢您提供的出色工具。您对在这种情况下如何使用 AddTransformation 有什么建议吗?我尝试了几件事,但都失败了。我总是遇到一个异常,它不能将双精度(从 excel 单元格)转换为它应该引用的 Enum 类型。实际上不确定为什么它认为该值是双精度值,因为它们显然是 excel 中的整数...
      • 想通了并发布了我的解决方案。 AddTransformation 也有可能,但选择了其他方式。
      【解决方案3】:

      解决方案是创建一个新对象并手动映射属性。枚举是这样处理的:

      MyEnumProperty = (MyEnumProperty)Convert.ToInt32(c["ColumnNameInExcel"])
      

      【讨论】:

        【解决方案4】:

        我尝试了 AddTransformation 方法,从 Double 到枚举的无效转换问题。

        excelFile.AddTransformation<Table>(x => x.Company, cellValue => (MyEnumProperty)Convert.ToInt32(cellValue));
        

        【讨论】:

          猜你喜欢
          • 2018-04-23
          • 2016-12-29
          • 2011-02-03
          • 1970-01-01
          • 2019-07-06
          • 2021-10-11
          • 2013-01-30
          • 2018-08-01
          • 2015-06-26
          相关资源
          最近更新 更多