Преобразованный файл php UTF-16LE не открывается в Excel после последних обновлений Office

У нас есть рабочие фрагменты кода 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);

Спецификация есть, а $ out содержит таблицу. Если вы поместите любую простую таблицу в $ out — она ​​не проснется. Например:

<table><tr><td>XX</td></tr></table>

Это очень странно, поскольку, если я открою сгенерированный файл в Notepad ++ и сохраню его снова (ничего не изменилось), Excel откроет его правильно.

Я думаю, что проблема где-то с iconv …, так как я удаляю его, Excel отображает некоторые странные символы.

Есть ли кто-нибудь в такой же ситуации?

Буду признателен за любую помощь или предложение по моей проблеме.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]