Begrenzungszeichen beim speichern in excel

edited November 2015 in Questions about Code

Schönen Sonntag zusammen Ich habe einmal eine Frage zum abspeichern meiner Daten in Excel. Das speichern geht ja nur ich möchte gerne mit dem abspeichern erst in der 8. Zeile beginnen, das bekomme ich nicht hin und beim abspeichern habe ich immer die Begrenzungszeichen sprich Gänsefüsschen mit abgespeichert, das sieht dann so aus:

, "Typ Schloss Stck. ","Schliess Nr. ","Nr ","Schluessel Stck ",Hauptschluessel Anzahl 1 0102- 1 2 6667 X,,,,, 1 0104- 2 2 6667 X,,,,, 1 0120- 3 2 6667 X,,,,, 1 0122- 4 2 6667 X,,,,, 1 0124- 5 2 6667 X,,,,, 1 0140- 6 2 6667 X,,,,, 1 0142- 7 2 6667 X,,,,, 1 0144- 8 2 6667 X,,,,, 1 0300- 9 2 6667 X,,,,, 1 0302- 10 2 6667 X,,,,, 1 0304- 11 2 6667 X,,,,, 1 0320- 12 2 6667 X,,,,, 1 0322- 13 2 6667 X,,,,, 1 0324- 14 2 6667 X,,,,, 1 0340- 15 2 6667 X,,,,, 1 0342- 16 2 6667 X,,,,, 1 0344- 17 2 6667 X,,,,, 1 2100- 18 2 6667 X,,,,, 1 2102- 19 2 6667 X,,,,, 1 2104- 20 2 6667 X,,,,, der Code sieht so aus:

`void excel() { // func start

 Table table;
 String l1="    ";
 String l2="Typ Schloss Stck.    ";
 String l3="Schliess Nr.     ";
 String l4="Nr    ";
 String l5="Schluessel Stck      ";
 String l6="Hauptschluessel  Anzahl";



  table = new Table();  

  table.addColumn(l1);
  table.addColumn(l2);
  table.addColumn(l3);
  table.addColumn(l4);
  table.addColumn(l5);
  table.addColumn(l6);

  for (int x=0; x<AT5; x++){    
  TableRow newRow = table.addRow();
  newRow.setString(0,zeilen[x]);  
  saveTable(table, "Kunden/"+kdnr+" excel kompl.csv"); 
  }

  for (int xx=0; xx<zzz; xx++){    
  TableRow newRow = table.addRow(); 
  newRow.setString(0,folge1[xx]);  
  saveTable(table, "Kunden/"+kdnr+" excel folge.csv");
  datenspeicher();
  }

} // func ende`

Answers

  • edited November 2015 Answer ✓

    Hallo,

    also erstmal grundsätzlich: Es hilft enorm, wenn du deinen Code fürs Forum formatierst. (Einfügen, markieren, dann auf das "C" in der Leiste klicken. Am besten davor und danach eine Leerzeile lassen).

    Dann zu deinem Problem: Wenn du Leerzeichen am Anfang oder Ende eines Strings hast, werden beim Speichern automatisch Anführungszeichen eingefügt. Wenn du sie weglässt, hast du auch die Anführungszeichen nicht mehr. (Das gleich Problem hast du übrigens auch, wenn du Kommas oder Zeilenumbrüche in deinem String hast.)

    Wenn du leere Zeilen zu beginn haben willst, dann darfst du keine Spalten mit Titel erzeugen. Erzeuge einfach 8 leere Zeilen mit addRow() und danach kannst du in der neunten Zeile deine Titel als String einfach ablegen.

    Dann fällt mir noch etwas auf, das ziemlich seltsam ist, du speicherst die Tabelle nach jeder Zeile ab. Das kann eventuell ziemlich lange dauern. Es reicht völlig, wenn du das einmal ganz am Ende machst.

    Hier mal eine Version mit Leerzeilen und ohne Anführungszeichen. Ich hab für die Titel auch ein Array verwendet, damit es weniger Schreibarbeit ist.

    void setup() {
      saveCSV();
    }
    
    void saveCSV() { 
    
      Table table; 
      String[] titles = {
        "", 
        "Typ Schloss Stck.", 
        "Schliess Nr.", 
        "Nr", 
        "Schluessel Stck", 
        "Hauptschluessel Anzahl"
      };
    
      // new table
      table = new Table();
    
      // 8 empty rows
      for (int i =0; i<8; i++) {
        table.addRow();
      }
    
      // row for titles
      TableRow newRow = table.addRow();
      // set titles
      for (int i=0; i<titles.length; i++) {
        newRow.setString(i, titles[i]);
      }
    
      // add 10 rows with random data
      for (int j =0; j< 10; j++) {
        newRow = table.addRow();
        for (int i =0; i< table.getColumnCount(); i++){
          newRow.setInt(i, (int)random(200));
        }
      }
    
      // save table only once at the end
      saveTable(table, "test.csv");
    } 
    
  • Danke für den Hinweis mit dem Formatieren des Codes, das kenne ich nicht so, im Arduino Forum ist es umgekehrt da muss man erst auf das c drücken und dann den Code dazwischen setzen. aber Gut jetzt weis ich es. Dein Beispiel hat mir sehr geholfen. Danke

  • benja , Ich habe noch einmal eine Frage. Wenn ich Dir auf die Nerven gehe , sage es mir :-) Wenn ich meine Daten in Excel abspeicher, habe ich die Möglichkeit wenn ich mir in Excel ein Datenblatt erstelle mit Kopfzeile in dem ein LOGO ist, von dem Programm aus zu bestimmen das er genau das Datenblatt nimmt, so das ich immer die Kopfzeile mit drin habe beim drucken. l.G.Jürgen

  • Answer ✓

    Und die Frage? Kenne mich mit Excel nicht so gut aus, wenn es darum geht wie man dort etwas macht, bin ich auf jeden Fall der falsche.

  • Hallo benja. Ich hänge hier an einem Problem fest. Ich möchte ein String Array mischen. in meinem Array "mix[]" welches ich mit String[] mix =new String[count]; aus einem größeren Array gemacht habe sind die Schliess Nr. enthalten die als letzte Folge Schliessungen ermittelt wurden. Die Größe des Array`s variiert immer in der Größe wie der Kunde nach bestellt. Das Array mix[] soll gemischt werden, da komme ich nicht mit zurecht. Ich habe schon im Internet gesucht aber ich bergreife es einfach nicht. Gibt es eine einfache Lösung ein String Array zu mischen, so das keine Doppelten Strings in dem Array vorkommen ?

    l.G.Jürgen

  • Answer ✓

    du meinst das zufällige ändern der Reihenfolge

    der Strings im Array

    siehe shuffle

Sign In or Register to comment.