TDM Geschrieben 3. März 2006 Teilen Geschrieben 3. März 2006 Hallo, ich hab hier eine Liste von Reparaturen die in einer DB liegen. Nun sollen diese, von Java, in eine csv Datei geschrieben werden. Das Problem dabei ist, dass wenn ich die Datei dann mit Excel öffne, kommt folgender Fehler: - 1 Datensatz kann nicht gelesen werden "Excel hat festgestellt, dass "Test.csv" SYLK-Datei ist, aber es kann die Datei nicht laden. Entweder ist die Datei fehlerhaft, oder es ist kein gültiges SYLK-Dateiformat. Klicken Sie ok, um die Datei in einem anderem Format zu öffnen" /** * Speichert alle Datensätze in einer externen Datei. * @param FileName * @param mainwindow */ public static void fileSave(String FileName, FrameHafelMain mainwindow){ try { File data = new File(FileName); FileWriter fwriter = new FileWriter(data); //Überschrift String field = "ID" + getTrennzeichen() + "Lieferant" + getTrennzeichen() + "ID.-Nr. des Herstellers" + getTrennzeichen() + "Typ" + getTrennzeichen() + "Bezeichnung" + getTrennzeichen() + "FaNr" + getTrennzeichen() + "Eingang vom FA" + getTrennzeichen() + "Beschreibung" + getTrennzeichen() + "Bemerkung des Bearbeiters" + getTrennzeichen() + "Kosten" + getTrennzeichen() + "Signum" + getTrennzeichen() + "Anmelde Datum" + getTrennzeichen() + "Stoernummer" + getTrennzeichen() + "Abholung" + getTrennzeichen() + "Ruecksendung" + getTrennzeichen() + "Ausgang an FA" + getTrennzeichen() + "Lieferschein-Nr." + getTrennzeichen() + "Verweildauer im RZ" + getTrennzeichen() + "\r\n"; Collection colRep = HafelFactory.loadReparaturen(); Iterator it = colRep.iterator(); Reparatur r = null; while(it.hasNext()) { r = (Reparatur) it.next(); field = field + "\r\n" + r.getKey() + getTrennzeichen() + r.getGeraet().getFirma().getName() + getTrennzeichen() + r.getGeraet().getSeriennummer() + getTrennzeichen() + r.getGeraet().getTechnikart() + getTrennzeichen() + r.getGeraet().getModell() + getTrennzeichen() + r.getFinanzamtsNummer() + getTrennzeichen() + r.getEingangVonAmtDatum().toString() + getTrennzeichen() + r.getFehlerNotiz() + getTrennzeichen() + r.getFehlerLoesung() + getTrennzeichen() + r.getKosten().toString() + getTrennzeichen() + r.getUser().getNachname() + getTrennzeichen() + r.getAnmeldungBeiLieferantDatum() + getTrennzeichen() + r.getStoerNummer() + getTrennzeichen() + r.getAusgangAnLieferantDatum() + getTrennzeichen() + r.getEingangVonLieferantDatum() + getTrennzeichen() + r.getAusgangAnAmtDatum() + getTrennzeichen() + r.getLieferscheinNummer() + getTrennzeichen() + r.getReparaturDauer(); } System.out.println(field); char[] feld = field.toCharArray(); if(feld.length > 0){ fwriter.write(feld); fwriter.flush(); fwriter.close(); } mainwindow.setStatus("Datei wurde gespeichert."); } catch(IOException e) { mainwindow.setStatus("Datei konnte nicht gespeichert werden."); e.printStackTrace(); } } Ich hab schon gemerkt, dass es wenn ich die Überschrift mit Notepad rauslösche, der Fehler nicht mehr auftritt. Allerdings hab ich keine Idee, warum er etwas gegen die Überschrift hat :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 3. März 2006 Teilen Geschrieben 3. März 2006 Poste mal bitte einen Auszug aus der CSV Datei. Ich vermute mal das es an \r\n liegen könnte. Da bin ich mir aber nicht sicher. Auch hast du nach der Überschrift noch ein Trennzeichen eingefügt aber bei den Datensätzen nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 3. März 2006 Autor Teilen Geschrieben 3. März 2006 Datei ist im Anhang (kannst probieren ob der Fehler bei dir auch kommt) Der Inhalt: ID;Lieferant;ID.-Nr. des Herstellers;Typ;Bezeichnung;FaNr;Eingang vom FA;Beschreibung;Bemerkung des Bearbeiters;Kosten;Signum;Anmelde Datum;Stoernummer;Abholung;Ruecksendung;Ausgang an FA;Lieferschein-Nr.;Verweildauer im RZ; 1;PCWare;202020;PC;Bluechip 550 MHZ;;Fri Mar 03 09:10:42 CET 2006;;;0.0;Mustermann;null;000000001;null;null;null;0001;0 2;PCWare;202020;PC;Bluechip 550 MHZ;;Fri Mar 03 09:10:42 CET 2006;;;0.0;fgkjh;null;000000002;null;null;null;0002;0 3;Compunet;VLU000123;Drucker;Kyocera FS 680;;Fri Mar 03 09:10:42 CET 2006;;;0.0;Mustermann;null;000000003;null;null;null;0003;0 4;PCWare;202020;PC;Bluechip 550 MHZ;;Fri Mar 03 09:10:42 CET 2006;;;0.0;fgkjh;null;000000004;null;null;null;0004;0 5;PCWare;ASX345320T2020;Monitor;ADI;;Fri Mar 03 09:10:42 CET 2006;;;0.0;Mustermann;null;000000005;null;null;null;0005;0 \r\n ist für den Zeilenumbruch (CRLF), wenn ich nur \n nehmen würde, käm da so ein Kästchen wenn ich das mit dem Notepad aufmach.Test.csv.txt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 3. März 2006 Teilen Geschrieben 3. März 2006 ID;Lieferant;ID.-Nr. des Herstellers;Typ;Bezeichnung;FaNr;Eingang vom FA;Beschreibung;Bemerkung des Bearbeiters;Kosten;Signum;Anmelde Datum;Stoernummer;Abholung;Ruecksendung;Ausgang an FA;Lieferschein-Nr.;Verweildauer im RZ[COLOR="Red"][B];[/B][/COLOR] [COLOR="red"][B][CR?CRLF?][/B][/COLOR] 1;PCWare der strichpunkt am ende der feldliste in der CSV-datei ist wohl überflüssig; ausserdem wahrscheinlich auch die leerzeile. \r\n stimmt im übrigen schon, \n allein wird nur auf unixähnlichen systemen als zeilenumbruch verwendet. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 3. März 2006 Teilen Geschrieben 3. März 2006 Also ich vermute mal das es in der Überschrift am ersten ID liegt. Denn wenn ich das mal Test halber weg lasse bzw. durch was anderes als ID ersetzte kommt die Meldung nicht. Ich denke mal, dass das Wort ID in Excel reserviert ist und eben nicht verwendetet werden darf. Entweder nimmt du was anderes oder es ist auch möglich ID ein Hochkommas zu setzten dann geht es auch ohne Probleme. Ach und wie Amstelchen schon richtig festgestellt hat ist das letzte Trennzeichen in der Überschrift unnötig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 3. März 2006 Autor Teilen Geschrieben 3. März 2006 Ok es lag anscheinden an der ID geht jetzt Danke euch beiden! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.