2016-12-09 2 views
-4

Ich versuche, .csv Datei zu lesen, aber es werfen Fehler input string was not in correct format. Hier ist meine .csv Excel-Datei Screenshot LINKThrow-Fehler "Eingabezeichenfolge war nicht im richtigen Format"? C# Windows Formen

Hier ist die Klasse

class DowStock 
{ 
    public string coName { get; set; } 
    public double coPrice { get; set; } 
    public double coChange { get; set; } 
    public decimal coChangePct { get; set; } 
    public long coVolume { get; set; } 
    public decimal coYTDchange { get; set; } 
} 

hier ist Formularcode

static DowStock SplitRow(string Row) { 
    DowStock rowResult = new DowStock(); 
    string[] splitRow = Row.Split(",".ToCharArray()); 
    rowResult.coName = splitRow[0]; 
    rowResult.coPrice = double.Parse(splitRow[1]); 
    rowResult.coChange = double.Parse(splitRow[2]); 
    rowResult.coChangePct = decimal.Parse(splitRow[3]); 
    rowResult.coVolume = long.Parse(splitRow[4]); 
    rowResult.coYTDchange = decimal.Parse(splitRow[5]); 
    return rowResult; 
} 
+0

'coVolume' ist mit' #### entweichen kann ' .Auch 'Komma' und du parsierst es als' lang' – Mairaj

+0

Du hast 'Convert.ToString()'/'Convert.ToDouble()' ... schon ausprobiert? Jeder Wert in 'splitRow' ist korrekt? – Essigwurst

+0

können Sie mir sagen, wie kann ich es lösen. Ich stelle '###' mit einigen Werten kein Problem und was ist der beste Datentyp für ',' zwischen Zahlen? –

Antwort

0

Wie Sie sehen, dass einige der Säulen #### wurden, die nicht umgewandelt werden können Doppelte Werte und das, was die Ausnahme verursacht, Beste Option, um eine solche Situation zu behandeln, ist TryParse, die Ihnen den Mindest- oder Standardwert dieses bestimmten Typs gibt, wenn die Konvertierung fehlgeschlagen ist. Daher möchte ich Ihnen vorschlagen, double.TryParse, Int64.TryParse und decimal.TryParse für die Konvertierung zu verwenden.

Zum Beispiel: Lässt rowResult.coPrice = double.Parse(splitRow[1]); für den Erhalt dieses Wertes betrachten wir wie folgt verwendet werden:

double coPrice = 0.0; 
double.TryParse(splitRow[1], out coPrice); 
rowResult.coPrice = coPrice; 
// The value will be 0.0 if the input is not convertible or 
// else it will be populated with the required value 

Like this Sie aus dem FormatException

+0

Danke für die Antwort, wenn ich 'double.TryParse' benutze dann gibt es mir Fehler' double enthält keine Definition für Versuch parse' –

+0

Ich habe meine Antwort mit Beispielschnippel aktualisiert können Sie bitte einen Blick –

+0

Ich habe beide richtig double 'Spalten, aber jetzt gibt es mir Fehler auf' Dezimal'. Was ist mit 'Dezimal'? –

Verwandte Themen