Heim >Backend-Entwicklung >PHP-Tutorial >Ausgabe der PHP-Kettenoperation in Excel (CSV)

Ausgabe der PHP-Kettenoperation in Excel (CSV)

WBOY
WBOYOriginal
2016-08-08 09:32:541002Durchsuche

Bei der Arbeit stoßen wir häufig auf Produktvorgänge, bei denen wir aufgefordert werden, einige einfache und relativ standardisierte Daten zu exportieren. Zu diesem Zeitpunkt wäre es viel einfacher, wenn es eine einfache Methode gäbe. Unten ist eine Methodenklasse von mir, die mithilfe von Kettenoperationen einfaches Excel (CSV) ausgibt. Apropos Kettenoperationen: Sie werden möglicherweise häufig in JQuery verwendet. Sind Sie auch der Meinung, dass Kettenoperationen in dieser Klasse sehr komfortabel sind?

Tatsächlich ist die Kettenoperation sehr einfach. Sie besteht darin, ein Objekt dieser Klasse ($this) am Ende der vorherigen Klassenmethode zurückzugeben und es für den nächsten Methodenaufruf bereitzustellen.

<?<span>php </span><span>class</span><span> Array2csv{ </span><span>/*</span><span> *@var string $ext 扩展名 </span><span>*/</span> <span>private</span> <span>$ext</span> = 'csv'<span>; </span><span>/*</span><span>* 
     * @desc构造方法
     * @param string $filename 要输出的文件名
     * @param string $ext 扩展名 </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>$filename</span>,<span>$ext</span>=<span>null</span><span>){ </span><span>ob_start</span><span>(); </span><span>header</span>("Content-type: text/html;charset=utf-8"<span>); </span><span>header</span>("Content-type: application/x-csv"<span>); </span><span>if</span>(PHP_SAPI == 'cli') <span>echo</span> "CLI模式下不能导出csv文件\r"<span>; </span><span>$this</span>->ext = <span>$ext</span> === <span>null</span> ? <span>$this</span>->ext : <span>$ext</span><span>; </span><span>header</span>("Content-Disposition: attachment;filename=".<span>$filename</span>.".".<span>$this</span>-><span>ext); </span><span>ob_flush</span><span>(); </span><span>return</span> <span>$this</span><span>;
    } </span><span>/*</span><span>* 
     * @desc 打印excel标题
     * @param array $title 要输出的标题行
     * @param object Array2csv 对象本身 </span><span>*/</span> <span>public</span> <span>function</span> title(<span>$title</span><span>){ </span><span>$title</span> = <span>implode</span>(",", <span>$title</span><span>); </span><span>echo</span> <span>$title</span>."\n"<span>; </span><span>return</span> <span>$this</span><span>;
    } </span><span>/*</span><span>* 
     * @desc 打印一行excel内容
     * @param array $body 要输出的内容
     * @param object Array2csv 对象本身 </span><span>*/</span> <span>public</span> <span>function</span> body(<span>$body</span><span>){ </span><span>if</span>(!<span>is_array</span>(<span>$body</span>) || <span>empty</span>(<span>$body</span><span>)) { </span><span>return</span> <span>false</span><span>;
        } </span><span>$body</span> = <span>implode</span>(",", <span>$body</span><span>); </span><span>echo</span> <span>$body</span>."\n"<span>; </span><span>return</span> <span>$this</span><span>;
    } </span><span>/*</span><span>* 
     * @desc 打印多行excel内容
     * @param array $bodyArr 要输出的多行内容
     * @param object Array2csv 对象本身 </span><span>*/</span> <span>public</span> <span>function</span> multiBody(<span>$bodyArr</span><span>){ </span><span>if</span>(!<span>is_array</span>(<span>$bodyArr</span>) || <span>empty</span>(<span>$bodyArr</span>)) <span>return</span> <span>false</span><span>; </span><span>foreach</span> (<span>$bodyArr</span> <span>as</span> <span>$key</span> => <span>$value</span><span>) { </span><span>if</span>(<span>is_array</span>(<span>$value</span><span>)){ </span><span>$value</span> = <span>implode</span>(",", <span>$value</span><span>); </span><span>echo</span> <span>$value</span>."\n"<span>;
            }
        } </span><span>return</span> <span>$this</span><span>;
    }
} </span><span>$test</span> = <span>new</span> Array2csv('test'<span>); </span><span>$arr</span> = <span>array</span><span>( </span><span>array</span>('luluyrt@163.com','奔跑的Man1','奔跑的userman'), <span>array</span>('luluyrt@163.com','奔跑的Man2','奔跑的userman'), <span>array</span>('luluyrt@163.com','奔跑的Man3','奔跑的userman'), <span>array</span>('luluyrt@163.com','奔跑的Man4','奔跑的userman'), <span>array</span>('luluyrt@163.com','奔跑的Man5','奔跑的userman'), <span>array</span>('luluyrt@163.com','奔跑的Man6','奔跑的userman'<span>)
); </span><span>$test</span>->title(<span>array</span>('测试','呵呵','哈哈'))->body(<span>array</span>('100,sadkl','sdsas','sdvsvdd分'))->multiBody(<span>$arr</span>);

Die Ausgabe-CSV sieht wie folgt aus:

Hier liegt jedoch ein Problem vor. Die aus der Datenbank mit UTF-8-Kodierung entnommenen chinesischen Zeichen werden verstümmelt. Zu diesem Zeitpunkt sollten Sie darauf achten, die Kodierung der Datenbank festzulegen Beispiel: Was ich brauche, ist UTF-8 für die Ausgabe. Zu diesem Zeitpunkt ist es notwendig

<span>$link</span> = <span>mysqli_connect</span>(<span>$host</span>, <span>$user</span>, <span>$passwd</span>, <span>$db</span><span>); </span><span>mysqli_query</span>(<span>$link</span>, "set names utf8");

Erst nach der Kodierungskonvertierung kann es normal angezeigt werden. Das Folgende sind meine Datenbankinformationen und der Effekt vor und nach der Kodierung:

Datenbankinformationen

Vergleich vor und nach dem Einrichten der Datenbankkodierung

Schick mir ~

Das Obige stellt die Ausgabe der PHP-Kettenoperation in Excel (CSV) vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn