Anzeige

 Zeilenumbruch für Excel generieren


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
#1
Hallo und guten Morgen zusammen,

ich habe folgende Frage:

Mittels Datenbank abfrage lasse Ich mir einen Report erstellen und lasse zusätzlich die Daten via PHP in eine Excel schreiben.

Mein Problem ist dass Ich keinen Zeilenumbruch generieren kann.
Wenn Ich "\r\n" oder "\t" verwende, setzt er mir diese immer eine neue Zelle.
Ich möchte dass aber in der aktuellen Zelle wo viel Text ist, auch nur dort der Zeilenumbruch generiert wird.

Auch habe Ich mal "^p" probiert, weil Ich irgendwo gelesen habe, dass dies auch einen generiert, jedoch setzt er in den Text nur ^p dran. :D

Hoffe man kann mir hier einen Tipp geben :)

Meine Abfrage sieht wie folgt aus:

PHP:
<?php
$table = '';

$sql = "SELECT
            *
        FROM
            [tabelle_x]
        WHERE
            DATEPART(WEEK, [xxx]) = DATEPART(WEEK, GETDATE() - 7)
            and
            DATEPART(YEAR, [xxx]) = DATEPART(YEAR, GETDATE())
            --and
            --[xxx] = 4
        ORDER BY
            [xxx]";

$rs = $mainPage->getDataFromDb($sql);

$report = 'Datum'."\t".
    'Nachname'."\t".
    'Vorname'."\t".
    'Titel'."\t".
    'Adresse'."\t".
    'Hausnummer'."\t".
    'Hnr-Zusatz'."\t".
    'Telefonnummer'."\t".
    'Telefonnummer Mobil'."\t".
    'Grund'."\r\n";

while($row = sqlsrv_fetch_array($rs)) {
    
    $report .=  $row['DATUM']."\t".
        $row['NACHNAME']."\t".
        $row['VORNAME']."\t".
        $row['TITEL']."\t".
        $row['ADRESSE']."\t".
        $row['HAUSNUMMER']."\t".
        $row['HNRZUSATZ']."\t".
        $row['TELEFON']."\t".
        $row['MOBILE']."\t".
        $row['GRUND']."\r\n";
    
    $table .= '<tr>'."\r\n";
        $table .= '<td>DATUM</td>'."\r\n";
        $table .= '<td>NACHNAME</td>'."\r\n";
        $table .= '<td>VORNAME</td>'."\r\n";
        $table .= '<td>TITEL</td>'."\r\n";
        $table .= '<td>ADRESSE</td>'."\r\n";
        $table .= '<td>HAUSNUMMER</td>'."\r\n";
        $table .= '<td>HNRZUSATZ</td>'."\r\n";
        $table .= '<td>TELEFON</td>'."\r\n";
        $table .= '<td>MOBILE</td>'."\r\n";
        $table .= '<td>GRUND</td>'."\r\n";
    $table .= '</tr>'."\r\n";
}

$verzeichnis = "X:\\hier\\report\\";
$dateiname = "XXXX_Report_KW_".$week."_".$year.".xls";                /********** WICHTIG: ID Anpassen **********/

if(!is_dir($verzeichnis)) { mkdir($verzeichnis); }

$datei = fopen($verzeichnis.$dateiname, "w");
fwrite($datei, $report);
fclose($datei);
?>
Vielen lieben DAnk
 

merzi86

Erfahrenes Mitglied
#2
Hallo Eurocent,
da du sowieso HTML-Code in deiner XLS-Datei nutzt probiere es mal mit

HTML:
<br style="mso-data-placement:same-cell;" />
BTW: hast du schon mal überlegt ein Framework ala PhpSpreadsheet zu nutzen, das erleichtert einen das erstellen, bearbeiten usw.
 
#3
Hallo @merzi86 vielen Dank für die rasche antwort :)

Werde Ich mal probieren, danke für den Tipp.

Ich verwende im privaten Bereich den PHPSpreadsheet, aber Firmen technisch wollen sie die Lib/Framework nicht :D

Muss denen nur noch suggerieren dass es notwendig ist.

[EDIT]
Hab es mal mit "style="mso-data-placement:same-cell;" probiert, jedoch schmeisst er mir es dann in neue Zellen statt in der aktuellen Zelle zu bleiben und dort den Umbruch zu generieren :(
 
Zuletzt bearbeitet:

merzi86

Erfahrenes Mitglied
#4
Ich habe gerade mal schnell gegoogelt, jetzt setzt anscheinend Excel mittlerweile ein Span um die texte und deshalb wird das in eine neue Zelle geschrieben.

Ein kleinen Hinweis und eine Lösung kannst du z.B. Hier finden.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Anzeige
Anzeige