0

我正在尝试使用 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);
?>
4

1 回答 1

2
'&#8211'

是一个 HTML 编号。

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

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

希望这可以帮助。

于 2013-10-24T07:29:11.657 回答