Как я могу закодировать это? - PullRequest
0 голосов
/ 12 января 2011

Салам, ребята,

Я хочу экспортировать отчет в Excel через php, я написал этот код:

header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header( "Content-type: application/vnd.ms-excel; charset=UTF-8" ); 
header("Content-Disposition: attachment; filename=test.xls");

$data = html_entity_decode( $data ,ENT_NOQUOTES,'utf-8');
$data = chr(255).chr(254).iconv("UTF-8","UTF-16LE",$data);

print $data;
exit();  

но это не работает, мой проект арабский, и я должен закодировать все символы, пожалуйста, сообщите мне, как я могу справиться с этим?

С наилучшими пожеланиями,

Mike

Ответы [ 2 ]

3 голосов
/ 12 января 2011

application/vnd.ms-excel не имеет параметра charset=, потому что это не текстовый формат. Вы, конечно, не пишете действительный файл Excel. Ваш код предположительно выводит файл CSV или что-то в этом роде. Соответственно измените заголовки и попробуйте:

header("Content-type: text/csv; charset=UTF-8" );
header("Content-Disposition: attachment; filename=test.csv");

Пропустить спецификацию и перекодировать материал. Ну, ладно: вам может понадобиться спецификация в соответствии с этим Как я могу вывести UTF-8 CSV на PHP, чтобы Excel правильно читал?

Если вы хотите написать файл Excel, то читайте в формате BIFF (который он на самом деле должен использовать). Я не уверен, как и если он поддерживает международные символы. Но вы все равно должны использовать библиотеку писателя Excel:

0 голосов
/ 12 января 2011

важно, чтобы эти строки кода выполнялись перед любым выводом. это означает, что если у вас есть какие-либо команды print / echo до этого, это не удастся.

также, html или даже пробелы в php-файле, за пределами

<?php

теги разрушат его для вас:)

...