Maison >développement back-end >tutoriel php >PHP utilise une méthode native pour exporter le partage d'instance Excel
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 à l'aide de PHP :
Utilisez la bibliothèque de classes PHP pour exporter, telle que PHPExcel
Utilisez la méthode native php pour exporter
Cet article explique comment exporter Excel via la méthode native
2.1, sortie ob
<?phpclass 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谦虚,而文件需要x权限,为了省事直接建立子文件夹,可以不需要修改谦虚 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>';?> <?phpif(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 ExcelL'utilisation de la fonction ob pour exporter Excel ne peut être enregistrée que sur le serveur, le téléchargement ne peut pas être fourni (il est toujours possible sous traitement spécial) ; ce qui suit décrit l'utilisation de la fonction header() pour exporter et télécharger ExcelLes deux principales fonctions header()
header("Content-type:application/vnd.ms-excel");//指定文件类型 header("Content-Disposition:filename=a.xls" ); //指定下载文件名Les autres méthodes sont les mêmes que l'export de la fonction ob (code complet ci-dessous)
query($sql);?> '; echo 'ConclusionVoici seulement Il présente brièvement l'exportation et le téléchargement d'Excel. L'une consiste à utiliser la fonction ob() et l'autre consiste à utiliser la fonction header(). Les deux méthodes sont similaires, mais il convient de noter que. Excel nécessite un codage GBK et doit utiliser la fonction iconv pour transcoder. Assurez-vous qu'aucun caractère tronqué n'apparaît.'; //设置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 '
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!