>  기사  >  백엔드 개발  >  PHP로 Excel을 내보내고 다운로드하는 기본 구현 방법

PHP로 Excel을 내보내고 다운로드하는 기본 구현 방법

*文
*文원래의
2017-12-22 16:17:413805검색

많은 친구들이 데이터를 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 . &#39;/&#39;. $fn, &#39;wb&#39;);
        fwrite($fp, $data);
        fclose($fp);
    }
    //excel默认是GKB,所有要转码
    public static function setChar ($value, $inchar = &#39;utf-8&#39;, $outchar =&#39;gbk&#39;)
    {
        return  iconv($inchar, $outchar, $value);//转化编码
    }
    //创建目录,linux系统一般要写到文件,目录需要w权限
    public static function setDir($dirName = &#39;excel&#39;)
    {
        if(!is_dir($dirName)) {
            mkdir($dirName);
        }
        return $dirName;
    }
}


4. 페이지 코드 완성


<?php
    header(&#39;Content-Type: text/html; charset=GBK&#39;); //excel需要GBK编码,为了防止转码产生的乱码,需要设置成GBK
    require &#39;coon.php&#39;;
    require &#39;excel.class.php&#39;;
    $sql = &#39;select * from user&#39;;
    $res = $link->query($sql);
    //判断是否有发送get数据
    if(isset($_GET[&#39;id&#39;])){
        $name = empty($_GET[&#39;id&#39;]) ? &#39;a&#39; . rand(1000,9999) : $_GET[&#39;id&#39;] ;
        $filename = $name . &#39;.xls&#39;;
        //设置缓存的开始
        Excel::start();
    }
?>
<?php
    //页面输出一般是不需要转码的,excel输出才需要转码
    echo &#39;<table width=500 height=25 border=0 align=center cellpadding=0 cellspacing=0>&#39;;
    echo &#39;<thead><tr>&#39;;
    //设置thead输出
    echo &#39;<td style="border-bottom:1px solid black;padding:10px;text-align:center;">&#39; . Excel::setChar(&#39;编号&#39;) . &#39;</td>&#39;;
    echo &#39;<td style="border-bottom:1px solid black;padding:10px;text-align:center;">&#39; . Excel::setChar(&#39;用户名&#39;) . &#39;</td>&#39;;
    echo &#39;<td style="border-bottom:1px solid black;padding:10px;text-align:center;">&#39; . Excel::setChar(&#39;密码&#39;) . &#39;</td>&#39;;
    echo &#39;</thead></tr>&#39;;
?>
<?php
    echo &#39;<tbody>&#39;;
    //设置tbody输出
    while($re = $res->fetch(PDO::FETCH_ASSOC)){
        echo &#39;<tr>&#39;;
        echo &#39;<td style="border-bottom:1px solid black;padding:10px;text-align:center;">&#39; . Excel::setChar($re[&#39;id&#39;]) . &#39;</td>&#39;;
        echo &#39;<td style="border-bottom:1px solid black;padding:10px;text-align:center;">&#39; . Excel::setChar($re[&#39;user&#39;]) . &#39;</td>&#39;;
        echo &#39;<td style="border-bottom:1px solid black;padding:10px;text-align:center;">&#39; . Excel::setChar($re[&#39;pwd&#39;]) . &#39;</td>&#39;;
        echo &#39;</tr>&#39;;
    }
    echo &#39;</tbody></table>&#39;;
?>
<?php
if(isset($_GET[&#39;id&#39;])){
    //保存文件
    Excel::save($filename);
}
if(isset($_GET[&#39;id&#39;])){
    echo &#39;<a href="obexcel.php">&#39; .Excel::setChar(&#39;完成&#39;) .&#39;</a>&#39;;
}else{
    echo &#39;<a href="obexcel.php?id">&#39; . Excel::setChar(&#39;导出&#39;) .&#39;</a>&#39;;
    
}
?>


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 '' . Excel::setChar('编号') . '';
    echo '' . Excel::setChar('用户名') . '';
    echo '' . Excel::setChar('密码') . '';
    echo '';
?>

';
    //设置tbody输出
    while($re = $res->fetch(PDO::FETCH_ASSOC)){
        echo '';
        echo '' . Excel::setChar($re['id']) . '';
        echo '' . Excel::setChar($re['user']) . '';
        echo '' . Excel::setChar($re['pwd']) . '';
        echo '';
    }
    echo '';
?>


6. 결론

여기서는 엑셀 내보내기와 다운로드에 대해서만 간략하게 소개하겠습니다. 하나는 ob() 함수를 사용하는 것이고, 다른 하나는 header() 함수 두 가지 방법은 비슷하지만 Excel에서는 잘못된 문자가 나타나지 않도록 하기 위해 iconv 함수를 사용하여 GBK 인코딩을 트랜스코딩해야 한다는 점에 유의해야 합니다.


이 글에서는 간략하게 소개했을 뿐입니다. 더 발전된 방법은 직접 탐구해 보아야 합니다.

관련 권장 사항:

PHPExcel을 사용하여 일괄 업로드 테이블 기능을 구현하는 방법

[강좌] PHP 제어 Excel 비디오 튜토리얼

순위 함수 기능 구현 방법 PHP


를 사용하여 Excel에서

위 내용은 PHP로 Excel을 내보내고 다운로드하는 기본 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.