22. 12. 2023
Sometimes you need to export a table to Excel and other spreadsheets. CSV file saved in UTF-8 seems to be the sufficiently universal format.
But there is a problem with non-ASCII characters in Excel. Excel default encoding depends on the system. The workaround is to put three magical bytes to the file beginning. They are called BOM (Byte order mark) and say to the editor that the file is encoded as UTF-8.
Code for the report of the assets of your company:
//headers header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Description: File Transfer'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename=export.csv;'); header('Content-Transfer-Encoding: binary'); //open file pointer to standard output $fp = fopen('php://output', 'w'); //add BOM to fix UTF-8 in Excel fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) )); if ($fp) { fputcsv($fp, array("Cars", "Planes", "Ships"), ";"); fputcsv($fp, array("12", "2", "6"), ";"); fputcsv($fp, array("23", "3", "5"), ";"); fputcsv($fp, array("31", "5", "8"), ";"); } fclose($fp);
Edit 2017-11-30: BOM does not work in older versions of Excel 2007. Try to update Excel in case of problems.
Do you need more detailed help? Book a consultation:
Do you want more?
We share the world of software development on our Instagram. Join us 🙂
We also tend to look for Android dev (iOS as well), but there are also chances for a project manager or a tester. Send us an e-mail: [email protected].