Zum Inhalt springen

Fehler beim Laden einer .csv-Datei


Empfohlene Beiträge

Geschrieben

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 :/

Geschrieben

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.

Geschrieben

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

Geschrieben


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

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...