Home  >  Article  >  Backend Development  >  Speculative: How to use PHP to export data to an Excel table (picture and text explanation)

Speculative: How to use PHP to export data to an Excel table (picture and text explanation)

炎欲天舞
炎欲天舞Original
2017-08-03 16:57:102588browse

1. Introduction

How to write data into an Excel file using the simplest, rough and violent method?

Since both ms word and excel documents support html text format, we can use html text format to output data based on this principle.

In HTML, we only need to put the data into the corresponding HTML table in the desired order.

We use PHP to obtain and organize the data and construct the corresponding html text, and finally download it to the user's local area through byte stream output.

2. Code

Go directly to the code. This is a very simple program with comments in it.

ExportExcel.class.php file


<?php
class ExportExcel{
    /**
    * @desc   将数据导出到Excel中
    * @param  $data array 设置表格数据 
    * @param  $titlename string 设置head 
    * @param  $title string 设置表头 
    * @param  $filename 设置默认文件名
    * @return 将字符串输出,即输出字节流,下载Excel文件
    */ 
    public function excelData($data,$titlename,$title,$filename){ 
        #xmlns即是xml的命名空间
        $str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>"; 
        #以下构建一个html类型格式的表格
        $str .= $title; 
        $str .="<table border=1><head>".$titlename."</head>"; 
        foreach ($data  as $key=> $rt ) 
        { 
            $str .= "<tr>"; 
            foreach ( $rt as $k => $v ) 
            { 
                $str .= "<td>{$v}</td>"; 
            } 
            $str .= "</tr>\n"; 
        } 
        $str .= "</table></body></html>"; 
        header( "Content-Type: application/vnd.ms-excel; name=&#39;excel&#39;" );   #类型
        header( "Content-type: application/octet-stream" );     #告诉浏览器响应的对象的类型(字节流、浏览器默认使用下载方式处理)
        header( "Content-Disposition: attachment; filename=".$filename );   #不打开此文件,刺激浏览器弹出下载窗口、下载文件默认命名
        header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" ); 
        header( "Pragma: no-cache" );   #保证不被缓存或者说保证获取的是最新的数据
        header( "Expires: 0" ); 
        exit( $str ); 
    }


}


?>


<?php
$obj=new ExportExcel();

$data = array(
    array(&#39;a11&#39;,&#39;a22&#39;,&#39;a33&#39;),
    array(&#39;b11&#39;,&#39;b22&#39;,&#39;b33&#39;),
    array(&#39;c11&#39;,&#39;c22&#39;,&#39;c33&#39;),
    array(&#39;d11&#39;,&#39;d22&#39;,&#39;d33&#39;),
    array(&#39;e11&#39;,&#39;e22&#39;,&#39;e33&#39;),
    array(&#39;f11&#39;,&#39;f22&#39;,&#39;f33&#39;),
    );      
$excelHead = "这个是Excel表格标题"; 
$title = "我的Excel表";   #文件命名
$headtitle= "<tr><th  colspan=&#39;3&#39; >{$excelHead}</th></tr>"; 
$titlename = "<tr> 
               <th style=&#39;width:70px;&#39;>表格1</th> 
               <th style=&#39;width:70px;&#39;>表格2</th> 
               <th style=&#39;width:70px;&#39;>表格3</th> 
            </tr>"; 
$filename = $title.".xls"; 
$obj->excelData($data,$titlename,$headtitle,$filename); 


?>

3. Test

Click to visit:

Download the Excel file

View the file after success:

After entering, Excel prompts that the file format is inconsistent with the suffix name. This also indirectly shows that the Excel file we exported only looks like Excel in appearance (it is actually an html file), and is not an Excel file in format.

Click to enter and view the content inside. It looks like Excel, haha. Just Jiang Zi

Change the suffix to html and enter to view:

You see, it is actually an html file, just Excel only supports this format.

4. Reference

"PHP Export Excel"

(above These are some of my own opinions. If there are any shortcomings or mistakes, please point them out)

The above is the detailed content of Speculative: How to use PHP to export data to an Excel table (picture and text explanation). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn