2014-06-04 25 views
8

Farklı tarayıcılar arasında farklı standartlarla uğraşmak zor olduğundan, js veya jQuery kullanarak html tablosunu dışa aktarmaya çalışmaktan vazgeçtim. Ben html tabloyu sunucuya geri POST ve kullanıcı indirmek için sunucu üzerinde bir .xls dosyası üretmek olabilir merak ediyorum.PHPExcel kullanarak excel'e html tablosu nasıl verilir?

Şimdi PHPExcel kullanarak sunucu tarafında, benim kod şu şekildedir:

$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; 

Sorun doğrudan html tablo yükleyemiyor olduğunu. Bununla nasıl baş edebilirim?

Ve bir soru daha, başlıkları php olarak ayarladığımda, düğmeyi tıkladığımda dosya indirilmemesi. Aslında POST cevabının Üstbilgisi'nin tüm özelliklerini ve aynı zamanda yanıtın (FireBug'da) içeriğini de doğru olarak görebiliyorum.

+0

Marjinal ilgili dosyaya çıkış içeriği kullanılacaktır - muhtemelen olabilir http://excelbuilderjs.com/ adresinden JS'deki ihracatı oluşturdu. – Stephen

+1

$ tabloyu geçici bir dosyaya kaydedin, ardından o dosyadan yükleyin –

+0

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

cevap

12

İçeriği doğrudan $objPHPExcel içine koymak için bir çalışma sayfası oluşturmanız ve ardından hücreye göre değerler hücresini ayarlamanız gerekir;

bir bütün HTML tablo eklemek için, Writer Aşağıdaki kodda bir HTMLReader

onu okumalıdır

$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

İkinci sayfadaki başka bir html tablosunu nasıl ekleyebilirim? aynı dosya? Lütfen bana yardım et. – Mahamadali

İlgili konular