当数据中的Unicode时,PHPExcel文件“损坏”

时间:2015-06-03 04:38:21

标签: unicode phpexcel

我已经成功使用PHPExcel几个月了。现在我有用户在他们的数据中输入Unicode,现在他们的报告没有在Excel中打开。

Excel 2010提供的确切错误是:
Excel在'blahblahblah.xlsx'中找到了不可读的内容。你想恢复这个工作簿的内容吗?如果您信任此工作簿的来源,请单击“是”。

点击是......
该文件已损坏,无法打开。

当我查看文件(转到.zip并打开.xml内容)时,我可以看到所有内容都已正确格式化。 UTF-8字符显示在我的文本编辑器中(带有重音的“o”显示为xC3作为单个项目),但这些编码似乎会杀死Excel。

我注意到单元格和工作表名称都使用了Unicode。

1 个答案:

答案 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有效,但它不起作用。这种转换并不完美,但它是可读的。