Cel mai frecvent format pentru exportul din MySQL&PHP este ca CSV. Totuşi, pentru că limba română are nişte diacritice atipic adaptate mediului online, ar fi necesar ca cel care deschide un astfel de fişier în Excel, să o facă într-o manieră mai tehnică, adică, din meniul Data, să aleagă opţiuntea From Text/CSV şi să aibă în vedere alegerea tipului UTF-8 sau Central European (Windows), după caz. De asemenea să aleagă bine delimitatorul coloanelor.
O variantă mai comodă pentru utilizator, ar fi „fotografierea” tabelului din PHP ca un pseudo-Excel. De fapt, deşi se va descărca cu extensia .xls vizualizarea în Notepad a unui astfel de fişier arată conţinut HTML pentru respectivul fişier. Un singur impediment cvasi-neimportant este că, la deschiderea fişierului, va apărea o înştiinţare că formatul şi extensia nu s-ar potrivi. Însă se va deschide fără probleme.
În acest scop, vom avea un fişier cu conţinutul paginii PHP, dar ceea ce se va dori a fi exportat, va fi asignat unei variabile (în acest caz, $tabel).
Fisierul initial
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $tabel = "<h2>Titlu</h2> <table class='catalog'> <tr><th>Nr. crt.</th><th>Grupa</th></tr>"; $sql = "SELECT gr FROM tabel "; $result = mysqli_query($con,$sql); $nr=0; WHILE ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $nr++; $tabel.= "<tr> <td>$nr</td> <td>".$row['gr']."</td> </tr>"; } $tabel.= "</table>"; ECHO $tabel; $_SESSION['tabel']=$tabel; ECHO '<a href="export.php" class="btn_a">Export</a>'; mysqli_free_result($result); mysqli_close($con); |
Fisierul pentru export
După cum se poate observa în scriptul anterior, fişierul pentru export preia variabila $_SESSION['tabel'] urmând a fi „împinsă într-un fişier cu extensia .xls.
Se poate, foarte bine ca numele fişierului excel să provină dintr-o variabilă, astfel încât să fie particularizat exportul.
1 2 3 4 5 6 7 8 9 10 11 |
<?php session_start(); $tabel=$_SESSION['tabel']; $tabel = mb_convert_encoding($tabel, 'UTF-16LE', 'UTF-8'); $tabel = "\xFF\xFE" . $tabel; // Prepend BOM header('Pragma: public'); header("Content-type: application/x-msexcel"); header('Content-Disposition: attachment; filename="fisier.xls"'); ECHO $tabel; exit; |