2015-01-30 5 views
-3

Я пытаюсь прочитать файл csv в структуре данных, но я не могу преобразовать его в двойной тип.Csv Convert Читать строку, чтобы удвоить

static void Main(string[] args) 
     { 
      var reader = new StreamReader(File.OpenRead(@"E:\file.csv")); 
      List<Double> close = new List<Double>(); 

      int counter = 0; 


      while (!reader.EndOfStream) 
      { 
       counter = counter + 1; 
       var line = reader.ReadLine(); 
       var values = line.Split(','); 


       string str = values[4]; 
       Double val = Convert.ToDouble(str); //THIS IS THE PROBLEM 

       Console.WriteLine(values[4].GetType()); 
      } 

      // Prompt to Exit 
      Console.WriteLine("Press any key to exit."); 
      Console.Read(); 


     } 

Я получаю сообщение об ошибке:

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll 

Additional information: Input string was not in a correct format. 

values[4] имеет тип System.string

+0

Попробуйте это, чтобы разобрать 'double.Parse (str, NumberStyles.Any, CultureInfo.InvariantCulture)' –

+0

Что содержит значения [4], вы посмотрели? – pm100

+0

Ну, если вы получаете 'FormatException', то очевидный вопрос: каково значение, вызывающее его исключение? – mason

ответ

1

'System.FormatException' указывает на проблему времени выполнения, вызванные данными в файле CSV, а не по коду вашего программа.

Это означает, что элемент с индексом 4 не представляет собой действительное значение double. Например, это может быть пустая строка или какая-либо другая нечисловая строка. Для того, чтобы диагностировать эту проблему должным образом, добавьте TRY/поймать вокруг вызова Convert.ToDouble(str), и выводит сообщение, когда вы получите исключение:

Double val; 
try { 
    val = Convert.ToDouble(str); 
} catch (FormatException fe) { 
    Console.Error.WriteLine("Got {0} when processing '{1}'", fe.Message, str); 
} 
1

Используйте метод Double.Parse. Затем вы можете предоставить NumberStyles, соответствующий тому, что написано в вашем .csv.

Смежные вопросы