Проблемы с кодировкой таблицы HTML в *.xls

Мой скрипт экспорта:

if($_POST){
    $file = 'FKDB_XLS';
    $filename = $file."_".date("Y-m-d_H-i",time()); 
    header("Content-type: application/vnd.ms-excel; charset=utf-8"); // dunno if the charset does anything for this application type..
    header("Content-Disposition: attachment; filename=$filename");
    echo stripslashes($_SESSION['item']); unset($_SESSION['item']);
    exit;
}

По сути, он просто превращает HTML ($_SESSION['item'] как <table>{rows}</table>) в *.xls и позволяет Excel рисовать таблицы из этих данных, как, вероятно, известно большинству из вас.

Проблема в том, что при открытии в Excel все в порядке, за исключением того, что... все значения написаны неправильно, со всеми Ä, ņŠи так далее вместо 'А' или около того, опять же.

Что я должен сделать, чтобы предотвратить это?

Заранее спасибо!


person tomsseisums    schedule 10.04.2011    source источник


Ответы (2)


Если вы пишете разметку HTML для импорта в Excel, вам необходимо убедиться, что вы устанавливаете соответствующие метатеги в заголовке HTML. указание charset в типе контента не будет иметь абсолютно никакого эффекта. Если вы просто пишете таблицу, оберните ее в HTML/HEAD/BODY и т. д., чтобы вы могли установить метатеги HEAD.

Я до сих пор не понимаю, почему люди пишут HTML и дают файлу расширение xls, когда так просто создать настоящий файл Excel!

person Mark Baker    schedule 10.04.2011
comment
Не поделитесь информацией о том, как легко создать настоящий файл Excel? - person tomsseisums; 11.04.2011
comment
@Tom - Я имею в виду, что существует множество библиотек PHP для создания подлинного файла BIFF .xls или файла Office Open XML .xlsx без простого написания файла csv или html и присвоения ему расширения .xls. В дополнение к PHPExcel (phpexcel.net), который является моей собственной библиотекой, в ответе на этот ТАК-вопрос -Excel - person Mark Baker; 11.04.2011
comment
Спасибо, я использую \t и \n для создания файлов xls, но у меня было много проблем с кодировкой, с таблицами намного проще и работает намного лучше. Еще раз спасибо Марк. - person Lucas Serafim; 02.09.2013

Добавьте это в свою HTML-таблицу, чтобы Excel считывал ее на лету:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
person Mohamed Ameziane    schedule 04.09.2011
comment
Вероятно, вокруг Content-Type должны быть кавычки. - person Ted Hopp; 13.11.2012