CSV/TXT Export mit fester Spaltengröße

  • CSV/TXT Export mit fester Spaltengröße

    Guten Morgen Zusammen,

    ich stehe hier vor einem pikanten Problem, wo ich echt vor ner Mauer stehe.

    Es handelt sich hierbei um ein PHP Script welches beim Ausführen eine Datenbankabfrage macht und diese Daten dann in ein TXT File packt....so funktioniert das ganze wunderbar.
    Jedoch habe ich in MySQL die Zeichenlänge pro Feld definiert - bei dem Export ignoriert er diese Spaltengröße und holt nur den Wert aus dieser Spalte raus. Im TXT File sollten die Spalten die größe der definierten Zeichenlänge haben und nicht die des Wertes.

    So sieht es bei mir aus:

    Quellcode

    1. $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    2. $i = 0;
    3. if (mysql_num_rows($result) > 0) {
    4. while ($row = mysql_fetch_assoc($result)) {
    5. //$csv_output .= $row['Field']." ";
    6. $i++;
    7. }
    8. }
    9. $csv_output .= "\n";
    10. $values = strtoupper($values);
    11. $values = mysql_query("SELECT spalte1, spalte2, spalte3, spalte4 FROM ".$table."");
    12. while ($rowr = mysql_fetch_row($values)) {
    13. for ($j=0;$j<$i;$j++) {
    14. $csv_output .= $rowr[$j]." ";
    15. }
    16. $csv_output .= "\n";
    17. }
    18. $filename = $file."_".date("Y-m-d_H-i",time());
    19. header("Content-type: application/vnd.ms-excel");
    20. header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    21. header( "Content-disposition: filename=".$filename.".csv");
    22. print $csv_output;
    23. exit;
    Alles anzeigen


    Vorab schonmal vielen Dank für eure Hilfe.
  • Schau dir dazu mal die Doku von [phpdoc]sprintf[/phpdoc] an:

    Quellcode

    1. <?php
    2. $s = 'monkey';
    3. $t = 'many monkeys';
    4. printf("[%s]\n", $s); // normale rechtsbündige Ausgabe
    5. printf("[%10s]\n", $s); // rechtsbündige Ausgabe, mit Leerzeichen aufgefüllt
    6. printf("[%-10s]\n", $s); // linksbündige Ausgabe, mit Leerzeichen aufgefüllt
    7. printf("[%010s]\n", $s); // auffüllen mit Nullen funktioniert auch bei Strings
    8. printf("[%'#10s]\n", $s); // Verwendung des benutzerdefinierten Auffüllzeichens '#'
    9. printf("[%10.10s]\n", $t); // linksbündige Ausgabe mit abschneiden überflüssiger
    10. // Buchstaben nach der zehnten Stelle
    11. ?>
    Alles anzeigen