2017-09-13 87 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()有助于避免高速缓存的缓冲。

希望这会有所帮助。