Maison  >  Article  >  développement back-end  >  Explication détaillée de l'exportation de données PHP

Explication détaillée de l'exportation de données PHP

小云云
小云云original
2018-02-23 15:23:011835parcourir

Récemment, je travaille sur un projet de gestion backend, et il est généralement nécessaire d'exporter des données pour exceler dans le backend. Après les recherches précédentes, il est généralement recommandé d'utiliser php excel. J'utilise souvent laravel, et il y en a aussi. un package correspondant très utile pour php Excel.
C'est très simple à utiliser au début, mais lorsque les données à exporter atteignent des dizaines de milliers, cela posera directement le problème de mémoire insuffisante.

L'avantage de cette solution est qu'elle ne nécessite pas d'interfaces supplémentaires, mais elle dépend des développeurs front-end.

  • Exporter vers csv

Cette solution est plus rapide et entièrement implémentée en back-end. L'inconvénient est que le format csv a des exigences relativement élevées. le formulaire d'exportation. L'exigence concerne des données pures et il ne peut pas y avoir de formulaires de texte enrichi tels que des images.

Ce qui suit présente principalement comment exporter au format CSV

Introduction à la documentation officielle PHP

<?php

$list = array (
    array(&#39;aaa&#39;, &#39;bbb&#39;, &#39;ccc&#39;, &#39;dddd&#39;),
    array(&#39;123&#39;, &#39;456&#39;, &#39;789&#39;),
    array(&#39;"aaa"&#39;, &#39;"bbb"&#39;)
);

$fp = fopen(&#39;file.csv&#39;, &#39;w&#39;);

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

Exporter un exemple complet

<?php

$name = &#39;test&#39;;
header ( "Content-type:application/vnd.ms-excel" );
header ( "Content-Disposition:filename=".$name.".csv" );
header (&#39;Cache-Control: max-age=0&#39;);

//打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen(&#39;php://output&#39;, &#39;a&#39;);    

// 写入BOM头,防止乱码
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); 

// 生成的测试数据
function test()
{
    for ($i=0; $i < 150000; $i++) {
        yield [&#39;name&#39;, $i, &#39;男&#39;];
    }
}

// 表头
$headers = [&#39;名字&#39;, &#39;年龄&#39;, &#39;性别&#39;];

fputcsv($fp, $headers);

foreach (test() as $value) {
    fputcsv($fp, $value);
}

fclose($fp);
?>

Coopérer dans Laravel Chunk peut être utilisé pour exporter facilement et rapidement toutes les données.

Recommandations associées :

Explication détaillée des points de connaissance sur l'exportation de données PHP

Problèmes avec l'exportation de données PHP et le service WEB

Problèmes liés à l'export des données PHP et au service WEB


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