【问题标题】:MissingMethodException while using Csvhelper UseExcelLeadingZerosFormatForNumerics =true configuration in c#在 c# 中使用 Csvhelper UseExcelLeadingZerosFormatForNumerics =true 配置时出现 MissingMethodException
【发布时间】:2016-09-23 09:44:42
【问题描述】:

我正在使用 Csvhelper(2.16 版)将记录写入 csv 文件。

https://joshclose.github.io/CsvHelper/#getting-started

当生成的 csv 文件以 excel 格式打开时,我想保留前导零, 所以我在编写 csv 文件时使用了 UseExcelLeadingZerosFormatForNumerics= true 配置。

using (SqlDataReader dataReader = sqlHelper.ExecuteReader(sqlQuery, parameters))
                {
                    using (StreamWriter writer = new StreamWriter(csvfilepathTowrite))
                    {
                        CsvConfiguration config = new CsvConfiguration
                        {
                            UseExcelLeadingZerosFormatForNumerics = true
                        };

                        var csv = new CsvWriter(writer, config);

                        if (dataReader != null)
                        {
                            for (var i = 0; i < dataReader.FieldCount; i++)
                            {
                                csv.WriteField(dataReader.GetName(i));
                            }
                            csv.NextRecord();
                            while (dataReader.Read())
                            {
                                for (var i = 0; i < dataReader.FieldCount; i++)
                                {
                                    csv.WriteField(dataReader[i]);
                                }
                                csv.NextRecord();
                            }
                        }
                        else
                        {
                           //exception
                        }
                    }
                }

但它会引发以下异常

找不到方法: 'Void CsvHelper.Configuration.CsvConfiguration.set_UseExcelLeadingZerosFormatForNumerics(Boolean)'。

这可能是什么问题?

谢谢, 阿莫尔

【问题讨论】:

  • 您部署的 CsvHelper 版本与用于编译的版本不同。
  • 感谢 CodeCaster。目前我正在调试的 Visual Studio 应用程序未部署。
  • 好的,现在我已经为我的解决方案中的所有项目更新了 csvhelper。现在错误消失了。谢谢!!!
  • 能否将其添加为答案,以便我将其标记为答案?

标签: c# excel csv csvhelper


【解决方案1】:

MissingMethodException 几乎总是意味着您的应用程序正在运行的程序集版本与用于编译它的程序集不同。

在这种情况下,发生这种情况是因为您的主应用程序引用的另一个项目使用了旧版本的 CsvHelper 库,其中该属性不存在,因此找不到它的 getter 方法。

确保解决方案中的所有项目都引用相同版本的库,这样它的程序集就不会在构建时被旧版本覆盖。

【讨论】:

    【解决方案2】:

    用简单的数据测试并按预期工作:

            var data = new Dictionary<string, object> { 
                {"Field1", "a string"},
                {"Field2", "00001"}
            };
            using(var writer = new StringWriter())
            {
                var config = new CsvConfiguration { UseExcelLeadingZerosFormatForNumerics = true };
                var csv = new CsvWriter(writer, config);
                if(data != null)
                {
                    foreach(var key in data.Keys)
                    {
                        csv.WriteField(key);
                    }
                    csv.NextRecord();
                    foreach (var key in data.Keys)
                    {
                        csv.WriteField(data[key]);
                    }
                    csv.NextRecord();
                }
            }
    

    输出是:

    字段1,字段2

    一个字符串,="00001"

    可能是您的部署环境中的 CsvHelper.dll 版本不匹配?

    【讨论】:

      【解决方案3】:

      我通过整合我的 NuGet 包解决了这个问题。此处列出的 CsvHelper 版本不一致。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多