在PHP中将CSV导出为Excel

时间:2013-12-20 12:23:01

标签: php utf-8 character-encoding mime-types

我以CSV为例:

Type, जिल्ला शिक्षा कार्यालय डडेलधुरा,NGOI,NGO Request,21,0,0 Response, 4,0,0

并且它有utf-8字符,我想将它导出到excel所以我发布它并将其导出到excel并在参考了stackoverflow上的几个问题之后我做了如下:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Type: text/csv; charset=utf-8");
header('Content-Disposition: attachment; filename=file.csv');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
print $_POST['csv_data'];exit;

csv很好地导出为ex​​cel但未转换的字符编码显示如下:जिलà¥à¤²à¤¾ शिकà¥à¤·à¤¾ कारà¥à¤¯à¤¾à¤²à¤¯ डडेलधà¥à¤°à¤¾以及何时添加

echo "\xEF\xBB\xBF";

转换字符编码但数据显示在一列中,如下所示:

Type, जिल्ला शिक्षा कार्यालय डडेलधुरा,NGOI,NGO
Request,21,0,0
Response, 4,0,0

1 个答案:

答案 0 :(得分:1)

UTF8 + CSV + Excel已知是一个有问题的组合。 Excel只是不太擅长导入CSV。

您应该尝试的一件事是在CSV文件的开头添加UTF8 BOM character;这可能有助于Excel弄清楚如何处理它。

我很乐观,这会有所帮助,但如果没有,你可能不得不重新考虑使用CSV。

您可以使用的其他选项包括XML,并在PHP中创建实际的Excel文件(有许多库可以执行此操作,最好的是PHPExcel)。

希望有所帮助。