2017-09-13 1 views
0

J'ai besoin de exporter le tableau HTML avec les données de la base de données à xlsx fichier aussi facilement que possible. J'ai essayé PHPExcel et certains plugins JS, mais .PHPExcel exporter le tableau HTML à xlsx

Y a-t-il une nouvelle solution?

Tout ce que j'ai trouvé était presque 10 ans.

C'est ce que je créé:

Mon formulaire HTML:

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

Mon code PHPExcel (fichier: 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'); 

?> 

Lorsque je clique sur le bouton, télécharge le fichier, mais je ne peux pas l'ouvrir, à cause de "mauvais format".

J'ai aussi essayé ce tutoriel vidéo: https://www.youtube.com/watch?v=4dc3a4isHNE&t

exportation fichier Excel a travaillé, mais un autre problème est apparu.

Le problème que j'avais était mauvais jeu de caractères. Je dois utiliser des caractères tels que: , š, č, ř,,, ý, á, í etc. et ces caractères ont été complètement foirés.

+0

# 1 .... Assurez-vous absolument qu'il n'y a absolument aucune autre sortie de votre script, pas même de nouvelles lignes, qui est envoyé au navigateur –

+0

# 2 .... Utilisez UTF-8 pour toutes les chaînes et les textes, et puis il ne gâchera pas les caractères comme, š, č, ř, ý, ý,,, í etc –

+0

Pourquoi attendez-vous de "nouvelles" solutions pour quelque chose conçu pour écrire des fichiers dans des formats natifs Excel qui sont 10 + ans? –

Répondre

0

réponse Mise à jour:

<?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

Malheureusement, je suis complètement nouveau à PHP et ce code est un peu confus pour moi. ** Dans quelle variable devrais-je mettre mon contenu de table? ** De toute façon .. merci d'essayer de m'aider! –

+0

J'ai mis à jour ma réponse s'il vous plaît vérifier. – karthikeyan

0

J'ai changé le format et le tampon ajouté propre dans votre code.

<?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'); 

?> 

Parfois Excel2007 obtient conflit avec Excel5. Et cela dépend du fichier de bibliothèque disponible dans le PHPExcel. J'ai eu le même problème de fichier ne s'ouvrant pas après le téléchargement. Donc j'ai changé à Excel5

Des données d'échantillon ont été insérées pour vérifier si les données surgissent dans la feuille d'excel ou non. Vous pouvez le remplacer par la variable de base de données.

Aussi ob_end_clean() permet d'éviter la mise en mémoire tampon du cache.

Espérons que cela aide.