2016-09-23 107 views
0

我使用Csvhelper(版本2.16)將記錄寫入csv文件。使用Csvhelper時MissingMethodException UseExcelLeadingZerosFormatForNumerics =在c#中的真實配置

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

我想繼續當生成CSV文件以Excel格式打開前導零, 所以我用UseExcelLeadingZerosFormatForNumerics =真正的配置,而寫入csv文件。

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 
         } 
        } 
       } 

但它拋出以下異常找不到

方法: '太虛CsvHelper.Configuration.CsvConfiguration.set_UseExcelLeadingZerosFormatForNumerics(布爾)'。

這裏有什麼問題?

感謝, 阿莫爾

+1

您部署了與用於編譯的版本不同的CsvHelper版本。 – CodeCaster

+0

感謝CodeCaster。目前我正在調試Visual Studio應用程序沒有部署。 – amol

+0

好吧,現在我已經更新了我的解決方案中的所有項目的csvhelper。現在錯誤消失了。謝謝!!! – amol

回答

2

MissingMethodException幾乎總是意味着您的應用程序正在使用與用於編譯的程序集不同的程序集版本運行。

在這種情況下,它發生是因爲您的主應用程序引用的另一個項目使用了舊版本的CsvHelper庫,其中該屬性不存在,因此未找到其getter方法。

確保解決方案中的所有項目都引用相同版本的庫,因此其構建程序不會被構建版本的舊版本覆蓋。

+0

太棒了!謝謝!! – amol

1

用簡單的數據測試,並如預期工作:

 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」

它可能是一個不匹配的版本的C您的部署環境中的svHelper.dll?

相關問題