_helper->Csv() from an action controller * * @param array $aryData * @param string $strName * @param bool $bolCols; default true; zeigt Spaltenüberschriften * @return void */ public function direct($aryData = array(), $strName = "csv", $bolCols = true) { $this->printExcel($aryData, $strName, $bolCols); } /** * array via fputcsv() zu csv * * @param array $aryData * @param string $strName * @param bool $bolCols * @return void */ public function printExcel($aryData = array(), $strName = "csv", $bolCols = true) { if (!is_array($aryData) || empty($aryData)) { exit(1); } // header header('Content-Description: File Transfer'); header('Content-Type: text/csv; charset=utf-8'); header("Content-Disposition: attachment; filename=export_" . $strName . "_" . date("Ymd_H-i") . ".csv"); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-control: private, must-revalidate'); header("Pragma: public"); // Spaltenüberschriften if ($bolCols) { $aryCols = array_keys($aryData[0]); array_unshift($aryData, $aryCols); } // Ausgabepuffer für fputcsv ob_start(); // output Stream für fputcsv $fp = fopen("php://output", "w"); if (is_resource($fp)) { foreach ($aryData as $aryLine) { // ";" für Excel fputcsv($fp, $aryLine, ';', '"'); } $strContent = ob_get_clean(); // Excel SYLK-Bug // http://support.microsoft.com/kb/323626/de $strContent = preg_replace('/^ID/', 'id', $strContent); $strContent = utf8_decode($strContent); $intLength = mb_strlen($strContent, 'utf-8'); // length header('Content-Length: ' . $intLength); // kein fclose($fp); echo $strContent; exit(0); } ob_end_clean(); exit(1); } }