Je pense que de nombreux amis utiliseront la fonction d'exportation de données vers EXCEL, alors comment utiliser PHP pour exporter EXCEL ? En plus des bibliothèques de classes telles que PHPExcel, une implémentation native est également possible. Cet article utilise du code natif pour implémenter l'exportation EXCEL.
1. Préface
Parfois, il est nécessaire d'exporter les ressources des tables de base de données vers Excel pour créer des données de rapport.
Il existe plusieurs façons d'exporter Excel en PHP :
Utilisez la bibliothèque de classes PHP pour exporter, telle que PHPExcel
Utilisez la méthode native de PHP pour exporter
Cet article présente comment exporter Excel via des méthodes natives
2 Fonctions clés
2.1, sortie ob
ob_start(); ob_get_contents ob_end_clean fopen fwrite fclose iconv
2.2. Sortie d'en-tête
header iconv
3. Utilisez la fonction ob pour exporter depuis Excel
La fonction ob est principalement divisée en trois étapes :
进行缓存的设置 读取缓存 写入文件
Publié ci-dessous L'exporté classe excel
<?php class Excel { // ob函数缓存的开始 public static function start () { ob_start(); } // 获取缓存内容 public static function save ($path) { $data = ob_get_contents(); ob_end_clean(); self::writeToExcel($path, $data); } //写到文件 private static function writeToExcel ($fn, $data) { $dir = self::setDir(); $fp = fopen($dir . '/'. $fn, 'wb'); fwrite($fp, $data); fclose($fp); } //excel默认是GKB,所有要转码 public static function setChar ($value, $inchar = 'utf-8', $outchar ='gbk') { return iconv($inchar, $outchar, $value);//转化编码 } //创建目录,linux系统一般要写到文件,目录需要w权限 public static function setDir($dirName = 'excel') { if(!is_dir($dirName)) { mkdir($dirName); } return $dirName; } }
4. Code de page complet
<?php header('Content-Type: text/html; charset=GBK'); //excel需要GBK编码,为了防止转码产生的乱码,需要设置成GBK require 'coon.php'; require 'excel.class.php'; $sql = 'select * from user'; $res = $link->query($sql); //判断是否有发送get数据 if(isset($_GET['id'])){ $name = empty($_GET['id']) ? 'a' . rand(1000,9999) : $_GET['id'] ; $filename = $name . '.xls'; //设置缓存的开始 Excel::start(); } ?> <?php //页面输出一般是不需要转码的,excel输出才需要转码 echo '<table width=500 height=25 border=0 align=center cellpadding=0 cellspacing=0>'; echo '<thead><tr>'; //设置thead输出 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('编号') . '</td>'; echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('用户名') . '</td>'; echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('密码') . '</td>'; echo '</thead></tr>'; ?> <?php echo '<tbody>'; //设置tbody输出 while($re = $res->fetch(PDO::FETCH_ASSOC)){ echo '<tr>'; echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['id']) . '</td>'; echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['user']) . '</td>'; echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['pwd']) . '</td>'; echo '</tr>'; } echo '</tbody></table>'; ?> <?php if(isset($_GET['id'])){ //保存文件 Excel::save($filename); } if(isset($_GET['id'])){ echo '<a href="obexcel.php">' .Excel::setChar('完成') .'</a>'; }else{ echo '<a href="obexcel.php?id">' . Excel::setChar('导出') .'</a>'; } ?>
5. Utilisez l'en-tête pour télécharger Excel
L'utilisation de la fonction ob pour exporter Excel ne peut être enregistrée que sur le serveur et ne peut pas être téléchargée (c'est toujours possible sous traitement spécial) ; Ce qui suit décrit comment utiliser la fonction header() pour exporter et télécharger Excel
Les deux principales fonctions header()
header("Content-type:application/vnd.ms-excel");//指定文件类型 header("Content-Disposition:filename=a.xls" ); //指定下载文件名
Les autres méthodes sont les idem que l'export de la fonction ob (à compléter ci-dessous le Code)
query($sql); ?> '; echo ''; //设置thead输出 echo ' '; ?> '; //设置tbody输出 while($re = $res->fetch(PDO::FETCH_ASSOC)){ echo '' . Excel::setChar('编号') . ' '; echo '' . Excel::setChar('用户名') . ' '; echo '' . Excel::setChar('密码') . ' '; echo ''; echo ' '; } echo ''; ?>' . Excel::setChar($re['id']) . ' '; echo '' . Excel::setChar($re['user']) . ' '; echo '' . Excel::setChar($re['pwd']) . ' '; echo '
6. Conclusion
Ici nous ne présentons que brièvement l'exportation et le téléchargement d'Excel, l'une consiste à utiliser la fonction ob() et l'autre à utiliser la fonction header(). Les deux méthodes sont similaires, mais il convient de noter qu'Excel nécessite un encodage GBK. , et la fonction iconv doit être utilisée pour le transcodage afin de garantir qu'aucun caractère tronqué n'apparaisse.
Cet article ne le présente que brièvement, des méthodes plus avancées doivent être explorées par vous-même.
Recommandations associées :
Comment utiliser PHPExcel pour télécharger des tables par lots
[Cours] Tutoriel vidéo PHP Excel Control
Comment implémenter la fonction de classement dans Excel en PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!