Cara mengekspor mysql ke xls

Dapat perintah buat modifikasi report excel yang sebelumnya jadi lebih detil. Karena report yang sebelumnya langsung nge-dump semua record kedalam .xls, jadi terlalu banyak yang harus dirapihin lagi.

Akhirnya dari penalaran (ca’ela :)) terhadap struktur tabel dan isi recordnya, maka saya putuskan membaginya ke dalam 3 file xls terpisah, setelah sebelumnya user diharuskan login dulu dan memilih jenis report.

Here’s my nubi code :

$export = mysql_query(your SQL query);
$fields = mysql_num_fields($export);
for ($i = 0; $i < $fields; $i++) {
$header[] .= mysql_field_name($export, $i);
}
$headers .= $header[0]."\t".$header[1]."\t".$header[2]."\t"; //and so on
$csv_output .= "\n".$headers."\n";
while($row = mysql_fetch_row($export)) {
$csv_output .= $row[0]."\t";
$csv_output .= $row[1]."\t";
$csv_output .= substr($row[2],0,7)."\t";
$stringinfo = substr($row[3],0,-12);
$csv_output .= trim(substr($row[3],0,-17), "NEW")."\t";
$csv_output .= strpbrk(substr($row[3],0,-12), "RENEW")."\t";
$csv_output .= $row[4]."\t";
$csv_output .= $row[5]."\t";
$csv_output .= $row[6]."\t";
$csv_output .= $row[7]."\t";
$csv_output .= $row[8]."\t";
$csv_output .= $row[9]."\t";
$csv_output .= str_replace("\r\n", "", $row[10])."\t";$csv_output .= "\n";
}
$data .= trim($csv_output)."\n";
$data = str_replace("\r","",$data);
if ($data == "") {
$data = "n(0) Records Found!\n";
}
$mode="xls";
$type="excel";
// Everything is now echoed to screen as a Microsoft Excel
//attachment.
header("Content-Type: application/vnd.ms-$type");
//header("Content-type: application/x-msdownload");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-disposition: attachment; filename=". date("d-m-Y")."-filename.xls");
print "$data";

masalah yang terjadi : ada satu field yang isinya file HTML – <br />, jadi setiap kali dieksport hasilnya di xls adalah : line baru. Setelah pusing coba semua fungsi2 string pada PHP, trnyata jawabannya adalah : mengganti karakter <br /> dengan “\r\n”. Sebenarnya ada satu masalah lagi yang sangat janggal dengan trim(), tapi setelah modifikasi string dengan substr() baru di trim lagi dan jalan, sudahlah……masih ada hari esok dan masih banyak masalah yang lain. hehe


Asumsi saya :

  • \r -> return
  • \n -> newline
  • \t -> newtab
  • \r -> gak tau 😀

Sumber : pencerahan om Google, dan forum2 rujukan si om