많은 친구들이 데이터를 EXCEL로 내보내는 기능을 사용할 것이라고 생각하는데, PHP를 사용하여 EXCEL을 내보내는 방법은 무엇입니까? PHPExcel 등의 클래스 라이브러리 외에 네이티브 구현도 가능합니다. 이 문서에서는 기본 코드를 사용하여 EXCEL 내보내기를 구현합니다.
1. 서문
일부 보고서 데이터를 만들기 위해 데이터베이스 테이블 리소스를 Excel로 내보내야 하는 경우가 있습니다.
PHP를 사용하여 Excel을 내보내는 방법에는 여러 가지가 있습니다.
PHPExcel과 같은 PHP의 클래스 라이브러리를 사용하여 내보내기
PHP의 기본 방법을 사용하여 내보내기
그리고 이 문서에서는 기본 방법을 통해 Excel을 내보내는 방법을 소개합니다
2. 주요 기능
2.1.ob 출력
ob_start(); ob_get_contents ob_end_clean fopen fwrite fclose iconv
2.2. 헤더 출력
header iconv
3. ob 함수를 사용하여 Excel에서 내보내기
ob 함수는 주로 세 단계로 나뉩니다.
进行缓存的设置 读取缓存 写入文件
내보내기를 Excel 아래에 붙여넣습니다. class
<?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. 페이지 코드 완성
<?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. Excel을 다운로드하려면 헤더를 사용하세요
Ob 기능을 사용하면 Excel로 내보내기만 가능하며 다운로드할 수 없습니다. (특수 처리는 여전히 가능합니다.) 다음은 Excel을 내보내고 다운로드하기 위한 header() 함수의 사용을 소개합니다
두 가지 주요 header() 함수
header("Content-type:application/vnd.ms-excel");//指定文件类型 header("Content-Disposition:filename=a.xls" ); //指定下载文件名
다른 방법은 Excel의 내보내기와 동일합니다. ob 함수(전체 코드는 아래)
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. 결론
여기서는 엑셀 내보내기와 다운로드에 대해서만 간략하게 소개하겠습니다. 하나는 ob() 함수를 사용하는 것이고, 다른 하나는 header() 함수 두 가지 방법은 비슷하지만 Excel에서는 잘못된 문자가 나타나지 않도록 하기 위해 iconv 함수를 사용하여 GBK 인코딩을 트랜스코딩해야 한다는 점에 유의해야 합니다.
이 글에서는 간략하게 소개했을 뿐입니다. 더 발전된 방법은 직접 탐구해 보아야 합니다.
관련 권장 사항:
PHPExcel을 사용하여 일괄 업로드 테이블 기능을 구현하는 방법
위 내용은 PHP로 Excel을 내보내고 다운로드하는 기본 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!