Festlegen der Breite der Tabellenkalkulationszelle mit PHPExcel


70

Ich versuche, die Breite einer Zelle in einem mit PHPExcel generierten Excel-Dokument festzulegen mit:

$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setWidth('10');
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setAutoSize(false);

aber das geht nicht.

Welche Methode muss ich hier aufrufen?

Antworten:


176

Es ist ein subtiler Unterschied, aber das funktioniert gut für mich:

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

Beachten Sie, der Unterschied zwischen getColumnDimensionByColumnundgetColumnDimension

Außerdem stelle ich nicht einmal AutoSize ein und es funktioniert gut.


Wie kann ich die wordwrap-Eigenschaft auf eine bestimmte Spalte festlegen? Es wäre nützlich für mich, wenn Sie wissen. Vielen Dank!
Talk2Nit

4
Es ist schon eine Weile her, dass ich mit PHPExcel gearbeitet habe, aber ich glaube, Sie möchten 'setWrapText'. Beispiel: $ objPHPExcel-> getActiveSheet () -> getStyle ('A6') -> getAlignment () -> setWrapText (true);
Jahmic

Jahmic hat recht. AutoSize ist standardmäßig für alle Spalten auf false gesetzt, daher ist es nicht erforderlich, dies mit Code zu tun.
imelgrat

10

Die setAutoSize-Methode muss vor setWidth stehen:

$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setAutoSize(false);
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setWidth('10');

2
AutoSize: false ist erforderlich, um eine Breite
festzulegen

1
getColumnDimensionByColumn () erwartet einen 0-basierten Spaltenindex, keinen Spaltennamen. (aus der Arbeitsblattklasse: "@param string $ pColumn Numerische Spaltenkoordinate der Zelle")
userfuser

8

Hallo, ich habe das gleiche Problem. Addiere 0,71, um den Wert für die Zellenbreite zu übertreffen, und gib diesen Wert an

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

Beispiel: Eine Spaltenbreite = 3,71 (Excel-Wert)

Geben Sie die Spaltenbreite = 4,42 an

gibt die Ausgabedatei mit der gleichen Zellenbreite.

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(4.42);

Ich hoffe das hilft


5

Das liegt daran, dass getColumnDimensionByColumn den Spaltenindex (eine Ganzzahl ab 0) und keine Zeichenfolge empfängt.

Gleiches gilt für setCellValueByColumnAndRow


4

autoSize für die als unten festgelegte Spaltenbreite. Für mich geht das.

$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);

2

Das hat bei mir funktioniert:

$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(false);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);

Achten Sie darauf setAuzoSize(false), vor dem setWidth();wie Rolland erwähnt hinzuzufügen


Bitte fügen Sie keine doppelte Antwort hinzu, wie Rolland sie bereits definiert hat
M Khalid Junaid

1
Ja, aber es funktioniert mit getColumnDimension und nicht mit getColumnDimensionByColumn
Magor Menessy

1

Die korrekte Methode zum Festlegen der Spaltenbreite ist die Verwendung der von Jahmic angegebenen Zeile. Beachten Sie jedoch, dass Sie nach dem Hinzufügen der Daten zusätzlich das Styling anwenden müssen und nicht vorher, da sonst bei einigen Konfigurationen die Spaltenbreite beträgt nicht angewandt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.