Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehler beim Laden einer .csv-Datei

Empfohlene Antworten

Veröffentlicht

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

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.

  • Autor

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


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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.