PHP는 기본 방법을 사용하여 Excel 인스턴스 공유를 내보냅니다.

黄舟
풀어 주다: 2023-03-15 14:16:01
원래의
5290명이 탐색했습니다.

1. 서문

보고서 데이터를 만들기 위해 데이터베이스 테이블 리소스를 Excel로 내보내야 하는 경우가 있습니다.

기본적으로 PHP에서 Excel을 내보내는 방법에는 여러 가지가 있습니다.

  1. PHPExcel과 같은 PHP 클래스 라이브러리를 사용하여 내보내기

  2. PHP 기본 방법을 사용하여 내보내기

그리고 이 문서에서는 다음을 통해 Excel을 내보내는 방법을 소개합니다. 기본 메서드

2, 주요 기능

2.1, ob 출력

  • ob_start();

  • ob_get_contents

  • ob_end_clean

  • fopen

  • fwrite

  • fclose

  • iconv

2.2. 헤더 출력

  1. header

  2. iconv

3.ob 함수는 주로 세 단계로 나뉩니다.

    캐시 설정
  1. 캐시 읽기
  2. 파일 쓰기
  3. 아래에 내보낸 엑셀 클래스를 붙여넣으세요

<?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 . &#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谦虚,而文件需要x权限,为了省事直接建立子文件夹,可以不需要修改谦虚
    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;;?>
<?phpif(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.

ob 함수를 사용하여 Excel을 내보내는 것은 서버에만 저장할 수 있고 다운로드할 수 없습니다(특수 처리에서는 여전히 가능합니다). 다음은 header() 함수를 사용하여 Excel을 내보내고 다운로드하는 방법을 설명합니다

주요 두 헤더 () 함수

header("Content-type:application/vnd.ms-excel");//指定文件类型    
header("Content-Disposition:filename=a.xls" );  //指定下载文件名
로그인 후 복사

다른 방법은 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에서는 GBK 인코딩이 필요하며 이를 보장하려면 트랜스코딩에 iconv 함수를 사용해야 합니다. 잘못된 문자가 나타나지 않습니다.

위 내용은 PHP는 기본 방법을 사용하여 Excel 인스턴스 공유를 내보냅니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!