Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Export-CSV-Datei

PHP-Export-CSV-Datei

WBOY
WBOYOriginal
2016-08-08 09:26:411125Durchsuche

Nachdruck: http://blog.csdn.net/huyanping/article/details/7068356

Wir stoßen oft auf die Notwendigkeit, Daten aus einer Datenbank in eine Excel-Datei zu exportieren. Die Verwendung einiger Open-Source-Bibliotheken wie PHPExcel ist zwar einfacher zu implementieren, aber die Unterstützung für große Datenmengen ist sehr schlecht, und das ist auch der Fall leicht, die Obergrenze der PHP-Speichernutzung zu erreichen. Die Methode hier besteht darin, mit fputcsv CSV-Dateien zu schreiben und Excel-Dateien direkt an den Browser auszugeben.
 
 //Geben Sie den Excel-Datei-Header aus. Sie können user.csv durch den gewünschten Dateinamen ersetzen
header('Content-Type: application/vnd.ms-excel');
header ( 'Content-Disposition: attachment;filename="user.csv"');
header('Cache-Control: max-age=0');
// Daten aus der Datenbank abrufen, um Speicher sparen, Daten nicht auf einmal in den Speicher einlesen, sondern nur Zeile für Zeile aus dem Handle lesen
$sql = 'select * from tbl where ...'; >query($sql);
// PHP-Dateihandle öffnen, php://output bedeutet Ausgabe direkt an den Browser
$fp = fopen('php://output', 'a') ;
// Informationen zum Excel-Spaltennamen ausgeben
$head = array('Name', 'Gender', 'Age', 'Email', 'Telephone', '...');
foreach ($head as $i => $ v) {
  // CSV Excel unterstützt GBK-Kodierung, muss konvertiert werden, sonst wird der Code verstümmelt
$head[$i] = iconv('utf-8 ', 'gbk', $v);
}
// Daten über fputcsv in das Dateihandle schreiben
fputcsv($fp, $head);
// Zähler
$cnt = 0;
// Jede $limit-Zeile den Ausgabepuffer aktualisieren, nicht zu groß, nicht zu klein
 $limit = 100000;
 // Daten Zeile für Zeile abrufen, ohne Speicher zu verschwenden
 while ($row = $stmt->fetch( Zend_Db::FETCH_NUM)) {
 $cnt ;
 if ($limit == $cnt) { //Aktualisieren Sie den Ausgabepuffer, um Probleme zu vermeiden, die durch zu viel verursacht werden data
ob_flush();
flush();
 $cnt = 0;
 }
 foreach ($row as $i => $v) {
 $row[ $i] = iconv('utf-8' , 'gbk', $v);
 }
fputcsv($fp, $row);
 }

Das Obige stellt den Export von CSV-Dateien mit PHP vor, einschließlich des Inhalts. 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