2017-09-13 89 views
0

我需要導出HTML表格從數據庫到xlsx文件儘可能容易。PHPExcel導出HTML表格到xlsx

我試過PHPExcel和一些JS插件,但沒有成功

有沒有新的解決方案?

我發現的一切都快過去了10年。

這是我創建:

我的HTML表單:

<form action="download.php"> 
    <input type="submit" value="Export" /> 
</form> 

我PHPExcel代碼(文件:的download.php):

<?php 

require_once "../Classes/PHPExcel.php"; 

$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'hello world!'); 
$objPHPExcel->getActiveSheet()->setTitle('Chesse1'); 

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="helloworld.xlsx"'); 
header('Cache-Control: max-age=0'); 

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

?> 

當我按一下按鈕,它下載文件,但我無法打開它,因爲「錯誤的格式」

我也試過這個視頻教程: https://www.youtube.com/watch?v=4dc3a4isHNE&t

導出Excel文件的工作,但另一個問題出現了。

我遇到的問題是錯誤的字符集。 我需要使用這樣的字符:ě,š,ř,ž,ý,á,í等,這些字符完全搞砸了。

+0

#1 ....確保絕對沒有其他輸出從您的腳本,甚至沒有新行,正在發送到瀏覽器 –

+0

#2 ....使用UTF-8的所有字符串和文字,然後它不會混淆字符,如ě,š,è,ř,ž,ý,á,í等。 –

+0

爲什麼你會期望「新」解決方案設計用於以原生Excel格式編寫文件+歲? –

回答

0

更新答案:

<?php 
$conn = new mysqli('localhost', 'root', ''); 
mysqli_select_db($conn, 'xlsexport'); 
$setSql = "SELECT `ur_Id`,`ur_username`,`ur_password` FROM `tbl_user`"; 
$setRec = mysqli_query($conn, $setSql); 
$columnHeader = ''; 
$columnHeader = "Sr NO" . "\t" . "User Name" . "\t" . "Password" . "\t"; 
$setData = ''; 
while ($rec = mysqli_fetch_row($setRec)) { 
    $rowData = ''; 
    foreach ($rec as $value) { 
     $value = '"' . $value['id'] . '"' . "\t".'"' . $value['ur_username'] . '"'."\t".'"' . $value['ur_password'] . '"'; 
     $rowData .= $value; 
    } 
    $setData .= trim($rowData) . "\n"; 
} 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename = User_Detail_Reoprt.xlsx"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo ucwords($columnHeader) . "\n" . $setData . "\n"; 
?> 
+0

不幸的是,我對PHP完全陌生,這段代碼對我來說有點困惑。 **我應該在哪個變量中放置我的表格內容?**無論如何..謝謝你試圖幫助我! –

+0

我已經更新了我的答案,請檢查它。 – karthikeyan

0

我已經改變了格式,並在代碼中加入緩衝液的清潔。

<?php 

require_once "../Classes/PHPExcel.php"; 

$objPHPExcel = new PHPExcel(); 

header('Content-Type: application/vnd.ms-excel; charset=utf-8'); 
header('Content-Disposition: attachment;filename="helloworld.xls"'); 

$objPHPExcel->setActiveSheetIndex(0); 
$objPHPExcel->getActiveSheet()->getCell('A20')->setValue("TEST PHPEXCEL"); 
$objPHPExcel->getActiveSheet()->setTitle('Chesse1'); 

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

?> 

有時Excel2007得到衝突Excel5。它取決於PHPExcel中的庫文件。我有同樣的文件下載後無法打開的問題。所以我改爲Excel5

已插入樣本數據以檢查數據是否出現在excelsheet中。您可以用數據庫變量替換它。

另外ob_end_clean()有助於避免高速緩存的緩衝。

希望這會有所幫助。