我已经成功使用PHPExcel几个月了。现在我有用户在他们的数据中输入Unicode,现在他们的报告没有在Excel中打开。
Excel 2010提供的确切错误是:
Excel在'blahblahblah.xlsx'中找到了不可读的内容。你想恢复这个工作簿的内容吗?如果您信任此工作簿的来源,请单击“是”。
点击是......
该文件已损坏,无法打开。
当我查看文件(转到.zip并打开.xml内容)时,我可以看到所有内容都已正确格式化。 UTF-8字符显示在我的文本编辑器中(带有重音的“o”显示为xC3作为单个项目),但这些编码似乎会杀死Excel。
我注意到单元格和工作表名称都使用了Unicode。
答案 0 :(得分:0)
我将使用的解决方案(虽然不完美):
function PHPExcel_UnicodeFix($value) {
//data seems to be UTF-8, despite internal encoding
// $iconv = iconv_get_encoding();
// $it = $iconv['internal_encoding'];
//such that $it == 'ISO-8859-1'
//but iconv($it,"ASCII//TRANSLIT",$value) doesn't work (data is already UTF-8?)
//Excel does not accept UTF-8?
$value_fixed = iconv("UTF-8","ASCII//TRANSLIT",$value);
return $value_fixed;
}
在我发现这个工作之前,我尝试了很多iconv()的组合。我也认为UTF-8对PHPExcel有效,但它不起作用。这种转换并不完美,但它是可读的。