0

PHPExcelを使用して、utf文字を含む文字列をExcelに書き込もうとしています。しかし、期待どおりに書かれていません。以下はサンプルコードです。

stackoverflow で提供されているさまざまなソリューションを試しましたが、どれも機能しない可能性があります。PHP で作業するのはこれが初めてなので、正しく理解できなかった可能性があります。

私の問題のサンプルコードを以下に示します。このサンプル文字列は、実際の実装で mysql テーブルから取得したもので、utf-8 をサポートするために「DEFAULT CHARSET=utf8 COLLATE=utf8_bin」を適用しました。

以下のようにしてブラウザに出力すると、「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