Autor | Zpráva | ||
---|---|---|---|
sjiamnocna Profil |
#1 · Zasláno: 6. 8. 2015, 09:59:04
Ahoj,
dělám přihlášku na jednu akci, kterou pořádáme, ale hlavní organizátorka potřebuje výstup jako .xlsx, použil jsem PHPExcel, chvíli to fungovalo, ale teď to plive prázdný dokument, bez chyb ale i bez dat. Mohli byste mi poradit? Kód pro XLSX je částečně zkopírovaný z PHPExcel/examples/, funkce jsem si doplnil, abych mohl data pridávat "jednodušeji" function cells(){ $alphabet = range('A','Z'); foreach($alphabet as $char) $chars[] = $char; foreach($alphabet as $char) foreach($alphabet as $subchar) $chars[] = $char.$subchar; return $chars; } function maketabledata($content) { $alphabet = cells(); for ($i = 0; $i < count($content); $i++) { $row = $i + 1; for ($j = 0; $j < count($content[$i]); $j++) { $table[$alphabet[$j] . $row] = $content[$i][$j]; } } return $table; } include_once 'db.php'; include_once 'prices.php'; include_once 'inc/classes/PHPExcel.php'; $rowcontent[0][] = 'Čas přihlášky'; $rowcontent[0][] = 'Jméno a příjmení'; $rowcontent[0][] = 'Datum narození'; $rowcontent[0][] = 'Město'; $rowcontent[0][] = 'Ulice a č.p.'; $rowcontent[0][] = 'Email'; $rowcontent[0][] = 'Telefon'; $rowcontent[0][] = 'Číslo účtu'; $rowcontent[0][] = 'Tlumočník'; $rowcontent[0][] = 'Ubytování'; foreach ($cenyjidlo as $jidlo) { $rowcontent[0][] = $jidlo['title']; } $rowcontent[0][] = 'Datum platby'; $rowcontent[0][] = 'Cena jídla'; $rowcontent[0][] = 'Účastnický poplatek'; $rowcontent[0][] = 'Skupina'; $rowcontent[0][] = 'Jméno rodiče'; $rowcontent[0][] = 'Kontakt na rodiče'; $res = $con->query("SELECT * FROM `$tablename`"); $i = 1; while ($row = $res->fetch_assoc()) { //čas přihlášky $rowcontent[$i][] = $row['posted']; //jméno účastníka $rowcontent[$i][] = $row['jmeno']; //datum narození $rowcontent[$i][] = $row['narozeni']; //adresa $adresa = unserialize($row['adresa']); $rowcontent[$i][] = $adresa['mesto'] . ' ' . $adresa['psc']; $rowcontent[$i][] = $adresa['ulice'] . ' ' . $adresa['cp']; //emailová adresa $rowcontent[$i][] = $row['email']; //telefon $rowcontent[$i][] = $row['tel']; //číslo účtu platby $rowcontent[$i][] = $row['cislouctu']; //ochota překládat $rowcontent[$i][] = ($row['preklad'] > 0) ? 'Ano' : 'Ne'; //potřeba ubytování $rowcontent[$i][] = ($row['ubytovat'] > 0) ? 'Ano' : 'Ne'; //objednané jídlo $j = 0; $jidlo = unserialize($row['jidlo']); foreach ($cenyjidlo as $chod) { $rowcontent[$i][] = $chod['options'][intval($jidlo[$j])]; $j++; } //datum platby $rowcontent[$i][] = $ws[$row['typ']]['title']; //cena za stravu $rowcontent[$i][] = $row['cenajidlo']; //cena workshopu $rowcontent[$i][] = $row['cenaws']; //skupina $rowcontent[$i][] = $row['group']; $rodic = unserialize($row['parent']); //Jméno rodiče $rowcontent[$i][] = $rodic['jmeno'].' '.$rodic['prijmeni']; //Kontakt na rodiče $rowcontent[$i][] = $rodic['tel'].'\n'.$rodic['email']; $i++; } $objPHPExcel = new PHPExcel(); // Set document properties $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); foreach (maketabledata($rowcontent) as $cell => $data) { //echo $cell . ' => '. $data . '<br/>'; $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cell, $data); } // Rename worksheet $objPHPExcel->getActiveSheet()->setTitle('Účastníci'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // Redirect output to a client’s web browser (Excel2007) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="ucastniciws.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit; |
||
sjiamnocna Profil |
Ještě dodám, že když to chci vypsat do tabulky (<table><tr><td>) funguje to a všechna pole se vypisují. I var_dump vypadá, že to funguje, jen ten excel z toho udělat... Teď mi to dává úplně prázdnou tabulku, bez jakékoli chybové hlášky
|
||
Časová prodleva: 9 let
|
0