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?

user198003
quelle

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.

Jahmic
quelle
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');
Rolland
quelle
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

König Alawaka
quelle
5

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

Gleiches gilt für setCellValueByColumnAndRow

Shurbks
quelle
4

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

$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
Du Luong
quelle
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

Magor Menessy
quelle
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

Go0se
quelle