PHPExcel 文件 "corrupt" 当数据中有 Unicode 时
PHPExcel file "corrupt" when Unicode in data
我已经成功使用 PHPExcel 几个月了。现在我有用户在他们的数据中输入 Unicode,现在他们的报告无法在 Excel.
中打开
Excel 2010 给出的确切错误是:
Excel 在 'blahblahblah.xlsx' 中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是”。
单击是...
文件已损坏,无法打开。
当我查看文件时(转到 .zip 并打开 .xml 内容),我可以看到所有内容都已正确格式化。 UTF-8 字符显示在我的文本编辑器中(带重音符号的 "o" 作为单个项目显示为 xC3),但这些编码似乎会杀死 Excel.
我注意到单元格和 sheet 名称中都使用了 Unicode。
我将要使用的解决方案(虽然不完美):
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 有效,但它不起作用。这种转换并不完美,但它是可读的。
我已经成功使用 PHPExcel 几个月了。现在我有用户在他们的数据中输入 Unicode,现在他们的报告无法在 Excel.
中打开Excel 2010 给出的确切错误是:
Excel 在 'blahblahblah.xlsx' 中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击“是”。
单击是...
文件已损坏,无法打开。
当我查看文件时(转到 .zip 并打开 .xml 内容),我可以看到所有内容都已正确格式化。 UTF-8 字符显示在我的文本编辑器中(带重音符号的 "o" 作为单个项目显示为 xC3),但这些编码似乎会杀死 Excel.
我注意到单元格和 sheet 名称中都使用了 Unicode。
我将要使用的解决方案(虽然不完美):
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 有效,但它不起作用。这种转换并不完美,但它是可读的。