Rychlý export databázové tabulky do Excelu (2007/2010) v PHP
MyEgo.cz
Rychlý export databázové tabulky do Excelu (2007/2010) v PHP
Pokud potřebujete rychle exportovat nějaká data - tabulku či VIEW - z MySQL databáze do Excelu, je to v PHP velice snadné díky PHPExcel knihovně na Codeplexu. Kromě moderního XLSX umí tato knihovna i XLS, PDF, CSV a další formáty.
Tento jednoduchý skript vezme VIEW v MySQL databázi (v tomto případě čtenost článků, které nějak souvisí s Microsoftem), vytvoří z nich Excelovský soubor, a nabídne jej ke stažení v Excel 2010 formátu.
class createXLSX { var $xlsxrow = 1; var $xlsxcolumn = 1; var $maxcolumn = 0; function getColumn($column) { if ($this->maxcolumn < $column) $this->maxcolumn = $column; if ($column > 26) return chr(ord('A') + floor(($column - 1)/26) - 1) . chr(ord('A') + ($column % 26) - 1); else return chr(ord('A') + $column - 1); } function writeRow($x, $data, $bold = false) { $i = 0; foreach ($data as $s) { $c = $this->getColumn($this->xlsxcolumn + $i++).strval($this->xlsxrow); $x->setActiveSheetIndex(0)->setCellValue($c,$s); if ($bold) $x->getActiveSheet()->getStyle($c)->getFont()->setBold(true); } $this->xlsxrow++; } }
Jako první sloupec je dobré uvést názvy položek v daném VIEW, nastavit mu tučné písmo a poté na veškeré sloupce udělat "autosize":
// vytvoreni XLSX $x = new PHPExcel(); $x->getProperties()->setCreator("Radek Hulán")->setTitle("Stats"); // zapsani dat z VIEW $xls = new createXLSX(); $q = sql_query("SELECT * FROM ctenost_ms"); $i = 0; while ($d = sql_fetch_assoc($q)) { if (!$i++) $xls->writeRow(&$x, array_keys($d), true ); $xls->writeRow(&$x, array_values($d) ); } // autosize for ($i = 1; $i<=$xls->maxcolumn; $i++) $x->setActiveSheetIndex(0)->getColumnDimension($xls->getColumn($i))->setAutoSize(true); // stahnuti souboru $filename = 'MS_'.date('d.m.Y',time()).'.xlsx'; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.$filename.'"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($x, 'Excel2007'); $objWriter->save('php://output');
Jednoduchou modifikací parametru v createWriter
metodě získáte i další zmíněné formáty.
Výsledek pak vypadá takto: