Frage

Ich spiele um mit einer PHP - MS Excel-Integration in diesen Tagen. Meine Aufgabe ist eine vorhandene Tabelle zu öffnen, einige Daten hinzufügen und die ausgefüllten speichern Tabelle als neue Datei. Im Grunde genommen eine Art von Vorlage Füllung Motor, eventhough xlsx-Dateien werden als Vorlagen verwendet.

Ich sah in PHPExcel was ziemlich nett Rahmen zu sein scheint. In Ordnung ein Proof of Concept zu implementieren ich auf das Minimum die folgenden (reduziert hat erforderlich ist, um darzustellen, was ich tun muss):

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load("myTemplateToFill.xlsx");

    //Here comes the actual filling
$objWorksheet = $objPHPExcel->createSheet();
$objWorksheet->setTitle('Apple')    ;
$objWorksheet->setCellValue('A1', 'Banana');    
$objPHPExcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('myFilledTemplate.xlsx');

des Lauf fand ich, dass eine neue Datei erstellt wird, wird mein daat eingefügt, aber leider mit alle vorhandenen Formatierungen verloren.

Die Frage ist also, ist es eine Möglichkeit, PHPExcel zu machen, diese formattigs hält in den neuen Datei? Oder sogar noch weiter zu gehen: ist es möglich, Diagramme zu halten usw. in einer Vorlagendatei und füllt die die Art, wie ich versuchte?

Vielen Dank im Voraus für alle Ihre Erfahrungen geteilt!

K

War es hilfreich?

Lösung

Hum, erstellen Sie ein neues Arbeitsblatt, Wich hat kein Format als Standard. Ich glaube, Sie müssen Ihre Werte in die bestehende Blatt hinzufügen?

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');

Andere Tipps

Die Formatierung wird wegen dieser Linie verloren $ ObjReader-> setReadDataOnly (true); das sagt den Leser zu lesen nur die Daten aus Ihrer Vorlage Arbeitsmappe, nicht die Formatierung.

Sie müssen auch die Daten, die in den bestehenden Arbeitsblätter ändern. ein neues Arbeitsblatt anlegen wird eine unformatierte Arbeitsblatt erstellen. Alternativ können Sie die PHPExcel_WorkSheet copy () Methode

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top