Maison  >  Article  >  développement back-end  >  Spéculatif : Comment utiliser PHP pour exporter des données vers un tableau Excel (explication image et texte)

Spéculatif : Comment utiliser PHP pour exporter des données vers un tableau Excel (explication image et texte)

炎欲天舞
炎欲天舞original
2017-08-03 16:57:102553parcourir

1. Introduction

Comment utiliser la méthode la plus simple, la plus brutale et la plus violente pour écrire des données dans un fichier Excel ?

Étant donné que les documents MS Word et Excel prennent en charge le format de texte HTML, nous pouvons utiliser le format de texte HTML pour générer des données basées sur ce principe.

En html, il suffit de mettre les données dans le tableau html correspondant dans l'ordre souhaité.

Nous utilisons PHP pour obtenir et organiser les données et construire le texte html correspondant, et enfin le télécharger dans la zone locale de l'utilisateur via la sortie du flux d'octets.

2. Code

Entrez directement le code Il s'agit d'un programme très simple avec des commentaires à l'intérieur.

Fichier ExportExcel.class.php


<?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); 


?>

Test

Cliquez pour visiter :

Télécharger le fichier Excel

Afficher le fichier après succès :

Après la saisie, Excel demande que le fichier Le format est le même que Les noms de suffixes sont incohérents, ce qui montre également indirectement que le fichier Excel que nous avons exporté ne ressemble qu'à Excel (il s'agit en fait d'un fichier HTML) et n'est pas un fichier Excel au format.

Cliquez pour entrer et afficher le contenu à l'intérieur. Cela ressemble à Excel, haha. Changez simplement le suffixe en html et affichez-le :

Regardez, c'est en fait un fichier html, seul Excel ne prend en charge que ce format.

4. Références

"PHP Export Excel"

(au-dessus de celles-ci sont quelques-unes de mes propres opinions. S'il y a des lacunes ou des erreurs, veuillez les signaler)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn