2016-06-12 6 views
0

Ich versuche PHPExcel zu nutzen, um etwas zu produzieren, die wie folgt aussehen:PHPExcel, warum werden meine Zeilenumbrüche nicht angezeigt, wenn PHPExcel_RichText verwendet wird?

Label:  
This is the value 

Wo „Label“ ist dunkelrot, und „Dies ist der Wert“ auf eine neue Zeile ist, in der gleichen Zelle.

Ich habe mit dem folgenden Code:

$text = new PHPExcel_RichText(); 
$label = $text->createTextRun("This is the label: "); 
$label->getFont()->setBold(true); 
$label->getFont()->setItalic(true); 
$label->getFont()->setColor(new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_DARKRED)); 

$text->createText(PHP_EOL . "This is the value"); 

$workbook->getActiveSheet()->getCell('A1')->setValue($text); 
$workbook->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true); 

Aber aus irgendeinem Grunde das scheint nicht zu funktionieren. Ich habe "\ r" und "\ n" anstelle von PHP_EOL ausprobiert (wobei darauf zu achten ist, dass doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwendet werden).

Ich habe auch versucht, die PHP_EOL auf den Etikettentext zu verschieben.

Wenn ich setValue($text . PHP_EOL) aufrufen, verliere ich die Formatierung, aber der Zeilenumbruch funktioniert.

Ich bin auf einem Mac mit Excel 2016, wenn das einen Unterschied macht. Leider kann ich nicht auf einer anderen Version von Excel testen. Kann mir jemand zeigen, wie ich das beheben kann?

+0

Mein Ratschlag ist, PHPExcel fallen zu lassen und Spout zu verwenden, das hat viel bessere Leistungen https: // github.com/box/spout –

+0

Danke @MassimilianoArione, ich gebe dies ein Blick – davidr360

+0

Set Zellverpackung –

Antwort

0

Verwenden von Excel für Mac 2011 auf dem neuesten OS X. Versucht, PHP_EOL und/oder "\n" hinzuzufügen.

$cellValue->createText(PHP_EOL); 
$cellValue->createText("\n"); 

Weder ist eine neue Linie zu schaffen, wenn PHPExcel_RichText verwenden.

1

Ich habe gerade Ihren Code auf meinem Mac versucht und es funktioniert gut, aber ich habe bereits mehrere Dateien des phpExcel-Pakets gepatcht.

Ich habe die mit phpExcel generierte Excel-Datei entpackt und die XML-Dateien mit denen aus einer normalen Excel-Datei verglichen und einige Unterschiede festgestellt. Einer davon ist, wie fett in der Datei sharedStrings.xml angegeben ist. in einer PHPExcel erzeugen Sie Datei haben:

<b val="1"/> 

und in einem regelmäßigen Excel

<b/> 

So in StringTable.php, in writeRichText Datei, ich habe

geändert
     // Bold 1 
        if($element->getFont()->getBold()) 
        { 
        $objWriter->startElement($prefix.'b'); 
        $objWriter->writeAttribute('val', ($element->getFont()->getBold() ? 'true' : 'false')); 
        $objWriter->endElement(); 
        } 

zu

     // Bold 1 
        if($element->getFont()->getBold()) 
        { 
        $objWriter->startElement($prefix.'b'); 
        $objWriter->endElement(); 
        } 

und ich tat das gleiche für die anderen wahren/falschen Eigenschaften.

Es war nicht genug, um mein eigenes Problem von Zeilenumbrüchen in RichTextObjects zu lösen, aber ich habe die anderen Patches gegeben, die ich in PHPExcel toRichTextObject only showing newlines after saving file again manually getan habe.

Damit, wenn ich Ihren Code verwenden, sind die Zeilenumbrüche korrekt eingestellt und sichtbar. Hoffe, es wird Ihr Problem lösen!

+0

Danke für die Antwort @ Régine. Und Entschuldigung für die fehlende Antwort - Ich habe mich eine Weile nicht eingeloggt. Am Ende spielte es keine Rolle, denn auf der Windows-Version von Excel (dem wichtigen nach Anwendungsfall) funktionierte alles wie erwartet in der Dokumentation. – davidr360