私たちは何年にもわたって動作する PHP コード スニペットを持っています。シンプルな HTML テーブルを生成し、ユーザーはこれらを XLS ファイルとして保存できます。そしてそれをExcelで開きます。
この種のファイルを開くと、Excel が開き、まったく空の灰色の領域が表示されます。エラーもメッセージもありません。ただの空白。これは、Office 2010 が最新 (2016.07.14) の公式の Microsoft Office 更新プログラムを取得したマシンでのみ発生します!
上記の PHP スニペットは非常に簡単です。
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-Disposition: attachment; filename=CO3_finance_export.xls");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $out);
BOM があり、$out にテーブルが含まれています。$out に単純なテーブルを配置すると、起動しません。例えば:
<table><tr><td>XX</td></tr></table>
生成されたファイルをメモ帳++で開いて再度保存すると(何も変更されていない)、Excelが正しく開くので、非常に奇妙です。
問題はiconvのどこかにあると思います...それを削除したので、Excelに奇妙な文字が表示されます。
同じ状況の人はいますか?
私の問題についての助けや提案をいただければ幸いです。