使用PHPExcel将utf-8字符存储到文件中

时间:2013-10-24 06:58:15

标签: php phpexcel

我正在尝试使用PHPExcel将包含utf字符的字符串写入excel。但它并没有按预期编写。下面是示例代码。

我尝试了stackoverflow提供的不同解决方案,但它们都没有工作可能我无法正确理解,因为这是我第一次使用PHP。

我正在为我的问题提供以下示例代码。这个示例字符串是在实际实现中从mysql表中获取的,我已经应用了“DEFAULT CHARSET = utf8 COLLATE = utf8_bin”来支持utf-8。

如果我喜欢下面并打印到浏览器,那么它可以正常使用“Content-Type:text / html; charset = utf-8”标题。

以下代码有什么问题?如何解决这个问题?特殊字符是大连字符

<?php
$libdir='/home/user';
include_once($libdir.'/PHPExcel.php');
include_once($libdir.'/PHPExcel/Writer/Excel2007.php');
$workBook = new PHPExcel();
$sheet = $workBook->getActiveSheet();
$str = 'i m &#8211 here';
$str = utf8_decode($str);
//echo STDERR $str;  if it print here then i will get proper string "&#8211 will be converted to big hyphen)
$sheet->setCellValueByColumnAndRow(0, 0, $str);
$filename = "abc.xls";
header('Content-type: application/xls');
header("Content-Disposition: attachment; filename=\"$filename\"");
$writer   = new PHPExcel_Writer_Excel5($workBook);
$cache_dir = "/home/user/cache";
$writer->save($cache_dir/$filename);
readfile($cache_dir/$filename);
?>

1 个答案:

答案 0 :(得分:2)

'&#8211'

是一个HTML编号。

像这样使用它来获得原始值:

echo html_entity_decode('&#8211;', ENT_COMPAT, 'UTF-8');

希望这有帮助。