2016-06-17 13 views
0

Ich muss eine vorhandene xlsx-Datei öffnen, die Textfelder enthält (die mit der vordefinierten Option wie Kreise, Quadrate usw. erstellt), und ich muss direkt hinter diese Objekte schreiben (sie sind transparent).PHPExcel fehlende Textfelder

Der Code unten tut alles gut, außer dass die neue Datei ohne die Boxen herunterlädt.

if(file_exists("app/file.xlsx")){ 

     $objTpl = PHPExcel_IOFactory::load("app/file.xlsx"); 
     $objTpl->setActiveSheetIndex(1); 

     $objTpl->getActiveSheet()->setCellValue('A1', 'x'); 
     $objTpl->getActiveSheet()->setCellValue('A2', 'y'); 
     $objTpl->getActiveSheet()->setCellValue('A3', 'z'); 

     $filename = 'new_file.xlsx'; 
     header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
     header('Content-Disposition: attachment;filename="'.$filename.'"'); 
     header('Cache-Control: max-age=0'); 

     $objWriter = PHPExcel_IOFactory::createWriter($objTpl, 'Excel2007'); 
     ob_end_clean(); 
     $ret = $objWriter->save('php://output'); 

     exit; 
    } 
+0

Dann müssen Sie einige Code für die PHPExcel Excel2007 Reader zu analysieren und zu interpretieren, für Kern PHPExcel Objekt, um sie zu halten, und für die PHPExcel Excel2007 Writer, um sie zu schreiben; weil sie nicht von der Bibliothek unterstützt werden –

+0

Wirklich? Nun ... lass uns eine andere Strategie ausprobieren. Vielen Dank! –

+0

Wirklich! Sie könnten sich COM (benötigt Windows Server mit MS Excel installiert) oder PUNO (erfordert Server mit Open/LibreOffice installiert) oder libXl ansehen –

Antwort

0

Sie können sich wahrscheinlich über das COM-Dotnet PHP-Modul tun dies

einfach die xlsx-Datei öffnen:

$excel = new COM("Excel.Application") or die ("Could not initialise Object."); 
      $excel->Visible  = 1; 
      $excel->DisplayAlerts = 0; 
      $Workbook = $excel->Workbooks->Open($file) or die("ERROR: Unable to open " . $file . "!\r\n"); 
      $Worksheet = $Workbook->ActiveSheet; 

und von hier aus den Dateien verändern und dann die saveas-Funktion verwenden. Alles in der Dokumentation von Microsoft: https://msdn.microsoft.com/EN-US/library/office/ff198122.aspx