Ich muss eine TXT-Datei mit fester Länge analysieren und in XML konvertieren. Dafür versuche ich die Datei Helfer Bibliothek zu benutzen.SolvingBadUse Ausnahme in FileHelpers C#
Meine TXT-Datei sieht etwa so aus. Es gibt die richtige Anzahl von Leerzeichen zwischen den Spalten. Stackoverflow hat sie entfernt, auch Textdateien können hier nicht gepostet werden, also ist dies das Beste was ich tun kann.
00000265287331ON Gaurav lath WVWDM9AJ3BW054510 665300313 20160111
00000265412333AB Kritin Kapoor WVWBA7AJ5AW423323 10100510855 20160111
00000265409491BC Gary Kasprov WVWMN9AN2AE538477 773713F 20160111
00000265723428ON ASBDHJW 3VWDX7AJ5BM008640 666760743 20160111
00003245782928AB Damn bruh 3VWDX7AJ7BM008526 10101931403 20160111
12345665842041NB Ayeyeyeye Yoyoyoy 3VWDX7AJ4BM317970 19498690 20160111
09876565877284ON Sample Name 3VWLX7AJ0BM004748 665727399 20160111
76542365887122AB Dragutiin ivanovic WVWCA7AJ7BW072789 10102120532 20160111
09843266079601BC Wayne Rooney 3VW3L7AJ4BM014663 837089F 20160111
23049466096203SK John Terry 3VWBK7AJXBM311645 300656416 20160111
Meine Haupt wie folgt aussieht
static void Main(string[] args)
{
var engine = new FixedFileEngine<VWDischargeTXT>();
VWDischargeTXT[] result = engine.ReadFile("C:\\Users\\GL1676\\Desktop\\CSRSDischarge01112016.txt");
foreach (var detail in result)
Console.WriteLine(" AcctNum: {0}, Province: {1}", detail.AcctNum, detail.province);
Console.Read();
}
Jedes Mal, wenn ich das Programm ein neues windoe öffnet laufen, die den Pfad der Datei hervorhebt und sagt
BadUsageException unhandled war. End Of Line Ergebnis der Verarbeitung des Feldes: XYZ in Zeile 2 (Sie müssen es als markieren [FieldOptional, wenn Sie diese Ausnahme vermeiden möchten])
Wenn ich das Feld als optional (auch hinzufügen, wenn dies nicht der Fall optional in irgendeiner Weise und ist in der Tat sehr wichtig) gibt es eine ganze Reihe von anderen Fehlern.
EDIT: Hier ist die Definition für VWDischargeTXT
[FixedLengthRecord()]
class VWDischargeTXT
{
[FieldFixedLength(14)]
public int AcctNum;
[FieldFixedLength(8)]
[FieldTrim(TrimMode.Right)]
public char province;
[FieldFixedLength(126)]
[FieldTrim(TrimMode.Right)]
public char CustomerName;
[FieldFixedLength(26)]
[FieldTrim(TrimMode.Right)]
public char VIN;
[FieldFixedLength(51)]
[FieldTrim(TrimMode.Right)]
public char RegNo;
[FieldFixedLength(31)]
[FieldTrim(TrimMode.Right)]
[FieldConverter(ConverterKind.Date, "yyyyMMdd")]
public DateTime DischargeDate;
}
Es könnte sein, ein anderes Feld zu testen, die gerade fehlt aber in den falschen Bereich immer geladen. Es gibt nicht genug Informationen zur Diagnose. Bitte editieren Sie Ihre Frage und fügen Sie die Klassendefinition für 'VWDischargeTXT' hinzu.Bitte stellen Sie auch sicher, dass die Daten in Ihrer Frage mit Ihrer Datendatei übereinstimmen (Sie sagten, dass es "etwas" ist), und veröffentlichen Sie sie als Text, der als Code und nicht als Screenshot formatiert ist. – Tone
Die Bearbeitung wurde hinzugefügt :) @Tone –
Entschuldigung, ich habe meinen Kommentar bearbeitet, als Sie gepostet haben, Sie haben es vielleicht nicht bemerkt. Ich werde einige Ihrer Daten sehen müssen (Ihre 'VWDischargeTXT'-Klasse stimmt nicht mit den Daten in der Frage überein, also wird es nicht funktionieren). – Tone