Salaam人,
我想通过php将报告导出到excel,我写了这段代码:
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header( "Content-type: application/vnd.ms-excel; charset=UTF-8" );
header("Content-Disposition: attachment; filename=test.xls");
$data = html_entity_decode( $data ,ENT_NOQUOTES,'utf-8');
$data = chr(255).chr(254).iconv("UTF-8","UTF-16LE",$data);
print $data;
exit();
但效果不好,我的项目是阿拉伯语,我必须编码所有字符, 请告诉我如何处理它?</ p>
最诚挚的问候,
麦克
答案 0 :(得分:3)
application/vnd.ms-excel
没有charset=
参数,因为它不是文本格式。您可能没有编写有效的Excel文件。您的代码假定输出CSV文件或其他内容。因此,相应地更改标题并尝试一下:
header("Content-type: text/csv; charset=UTF-8" );
header("Content-Disposition: attachment; filename=test.csv");
跳过BOM并重新编码。好吧,你可能需要根据这个How can I output a UTF-8 CSV in PHP that Excel will read properly?
如果你想写一个excel文件,那么请阅读BIFF格式(它实际上应该使用它)。我不确定它是如何以及是否支持国际角色。但是你应该使用Excel编写器库:
答案 1 :(得分:0)
在任何输出之前执行这些代码行非常重要。这意味着如果在此之前有任何print / echo命令,它将失败。
在
之外的php文件中也是html甚至是空格<?php
标签会毁了它:)