2014-06-04 10 views
8

Da es schwierig ist, mit verschiedenen Standards unter den verschiedenen Browsern umzugehen, gebe ich es auf, HTML-Tabelle mit js oder jQuery zu exportieren. Ich frage mich, ob ich die Tabelle in HTML zurück an den Server senden und eine .xls-Datei auf dem Server für den Benutzer zum Download generieren kann.Wie exportiere ich HTML-Tabelle mit PHPExcel?

nun auf der Seite Server mit PHPExcel, mein Code wie folgt aus:

$filename = "DownloadReport"; 
$table = $_POST['table']; 

ini_set('zlib.output_compression','Off'); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
//the folowing two lines make sure it is saved as a xls file 
header('Content-type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment; filename='.$filename); 

$objReader = PHPExcel_IOFactory::createReader('HTML'); 
$objPHPExcel = $objReader->load($table); 

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

exit; 

Das Problem ist, ich nicht HTML-Tabelle direkt laden kann. Wie kann ich damit umgehen?

Und eine weitere Frage ist, dass, während ich die Header in PHP, die Datei nicht herunterladen, wenn ich auf die Schaltfläche klicke. Eigentlich kann ich alle Attribute von Header der POST-Antwort und auch den Inhalt der Antwort (in FireBug) anzeigen, die alle korrekt sind.

+0

Geringfügig im Zusammenhang mit Datei den Inhalt verwendet werden lesen müssen - man könnte wahrscheinlich erstellt den Export in JS mit http://excelbuilderjs.com/. – Stephen

+1

$ table in eine temporäre Datei speichern und dann aus dieser Datei laden –

+0

http://stackoverflow.com/questions/23562380/phipexcel-create-spreadsheet-from-html-table – Aba

Antwort

12

Um Inhalte direkt in $objPHPExcel zu legen, müssten Sie ein Arbeitsblatt erstellen und dann Werte Zelle für Zelle festlegen, was nicht das ist, was Sie wollen.

eine ganze HTML-Tabelle einzufügen, können Sie es von einem HTMLReader

Im Code unter den Writer zur Ausgabe

$filename = "DownloadReport"; 
$table = $_POST['table']; 

// save $table inside temporary file that will be deleted later 
$tmpfile = tempnam(sys_get_temp_dir(), 'html'); 
file_put_contents($tmpfile, $table); 

// insert $table into $objPHPExcel's Active Sheet through $excelHTMLReader 
$objPHPExcel  = new PHPExcel(); 
$excelHTMLReader = PHPExcel_IOFactory::createReader('HTML'); 
$excelHTMLReader->loadIntoExisting($tmpfile, $objPHPExcel); 
$objPHPExcel->getActiveSheet()->setTitle('any name you want'); // Change sheet's title if you want 

unlink($tmpfile); // delete temporary file because it isn't needed anymore 

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // header for .xlxs file 
header('Content-Disposition: attachment;filename='.$filename); // specify the download file name 
header('Cache-Control: max-age=0'); 

// Creates a writer to output the $objPHPExcel's content 
$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$writer->save('php://output'); 
exit; 
+0

Wie kann ich eine weitere HTML-Tabelle im 2. Blatt hinzufügen? gleiche Datei? Bitte hilf mir dabei. – Mahamadali