Tutorial über Formatierungen -- Wie Zellen in einem Spreadsheet formatiert werden.
Was ist ein Format?
Ein Format ist ein Objekt der Klasse
Spreadsheet_Excel_Writer_Format.
Ein Format kann auf Zellen innerhalb eines Spreadsheets angewendet
werden, so dass die Zellen die Eigenschaften des Formates erben, wie
z.B. Text-Ausrichtung, Hintergrundfarbe, Rahmenfarben, usw.
Benutzung
Ein Format kann nicht direkt durch einen new-Aufruf erzeugt werden.
Sie erzeugen ein Format durch die Methode
addFormat() eines Workbook. Dadurch wird das Format
dem Workbook zugeordnet. Dieses Format kann nicht mit anderen Workbooks benutzt
werden.
Werfen wir einen Blick auf die Benutzung der
addFormat()-Methode:
Beispiel 38-1. addFormat-Benutzung <?php
require_once 'Spreadsheet/Excel/Writer.php';
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// Creating the format
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
?> |
|
Es wird ein Format für den Fettdruck erzeugt. Beachten Sie die Benutzung
des Kaufmanns-Und (&) das bei der Erzeugung des Formats auftaucht.
Wenn Sie es nicht benutzen, dann werden alle Formateigenschaften
ignoriert, die Sie setzen.
Sinnvolle Aktionen
Wir haben zwar unser erstes Format erzeugt, aber bis jetzt nicht benutzt.
Das werden wir jetzt ändern anhand eines Beispiels für DotCom.com.
Beispiel 38-2. Erstes Beispiel <?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
// We need a worksheet in which to put our data
$worksheet =& $workbook->addWorksheet();
// This is our title
$worksheet->write(0, 0, "Profits for Dotcom.Com", $format_bold);
// And now the data
$worksheet->write(0, 0, 0);
?> |
|
Zuerst wollen wir die Firmen-Farben benutzen, um einige Zellen und den Text darin einzufärben.
Beispiel 38-3. Zweites Beispiel <?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
$format_title =& $workbook->addFormat();
$format_title->setBold();
$format_title->setColor('yellow');
$format_title->setPattern(1);
$format_title->setFgColor('blue');
$worksheet =& $workbook->addWorksheet();
$worksheet->write(0, 0, "Quarterly Profits for Dotcom.Com", $format_title);
// While we are at it, why not throw some more numbers around
$worksheet->write(1, 0, "Quarter", $format_bold);
$worksheet->write(1, 1, "Profit", $format_bold);
$worksheet->write(2, 0, "Q1");
$worksheet->write(2, 1, 0);
$worksheet->write(3, 0, "Q2");
$worksheet->write(3, 1, 0);
$workbook->send('test.xls');
$workbook->close();
?> |
|
Zellen verbinden
Im ersten Beispiel befindet sich der Titel in der ersten Zellen, benötigt
aber aufgrund seiner Länge mehrere Zellen, weshalb nur ein
Teil formatiert ist, was häßlich aussieht.
Das werden wir jetzt ändern, der Titel soll sich über mehrere Zellen
erstrecken.
Dazu wird die Methode
setAlign() benutzt mit merge als Argument,
und es werden zusätzliche leere Zellen erzeugt, mit der entsprechende
Hintergrund-Formatierung. In zukünftigen Versionen von
Spreadsheet_Excel_Writer wird das Erstellen einfacher.
Wenden wir dies auf unser Beispiel an:
Beispiel 38-4. Zellen verbinden <?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
$format_title =& $workbook->addFormat();
$format_title->setBold();
$format_title->setColor('yellow');
$format_title->setPattern(1);
$format_title->setFgColor('blue');
// let's merge
$format_title->setAlign('merge');
$worksheet =& $workbook->addWorksheet();
$worksheet->write(0, 0, "Quarterly Profits for Dotcom.Com", $format_title);
// Couple of empty cells to make it look better
$worksheet->write(0, 1, "", $format_title);
$worksheet->write(0, 2, "", $format_title);
$worksheet->write(1, 0, "Quarter", $format_bold);
$worksheet->write(1, 1, "Profit", $format_bold);
$worksheet->write(2, 0, "Q1");
$worksheet->write(2, 1, 0);
$worksheet->write(3, 0, "Q2");
$worksheet->write(3, 1, 0);
$workbook->send('test.xls');
$workbook->close();
?> |
|