Autor Zpráva
Radek Cvek
Profil
Jednoduchá věc na pár řádků:
<?php
  header('Content-type: text/html; charset=utf-8',true);  
  $data='<table border="1"><tr><td>Travička</td><td>5 Kč</td></tr><tr><td>Kravička</td><td>500 Kč</td></tr></table>';
  $fp = fopen ("images/soubor.xls", "w"); 
  fwrite ($fp, $data);
  fclose ($fp); 
?>

Vytvoří mě soubor do Excellu, ale se špatnou diakritikou!
PHP manuál:
fwrite ($fp, "\xEF\xBB\xBF".utf8_encode($data)); nefunguje
fwrite ($fp, "\xEF\xBB\xBF".$data); nefunguje
fwrite ($fp, chr(255).chr(254).mb_convert_encoding( $data, 'UTF-16LE', 'UTF-8')); jediný vytvoří správnou diakritiku, ale zase jsem bez tabulky (je to pro csv pro excell)
tak jsem to celé udělal v tom UTF-16LE, ale taky nefunguje

Špatnou diakritikou myslím: TraviÄÂヘka 5 KÄÂヘ

Ještě bych měl dodat, že to otvírám v Open Office a s jinými soubory (ani s těmi vyexportovánými z phpMyAdmina) problémy nemám.
Pokud to nahraju do databáze a vyexportuju, je to bez chybičky.
Alphard_
Profil *
Pro OpenOffice není utf implicitní. Hlavička header je k ničemu (ta je poslána prohlížeči, soubor nemůže ovlivnit).
Dle http://neowiki.neooffice.org/index.php/Importing_HTML_Tables_into_a_Calc_Document jsem zkusil následující verzi, která mi fungovala.

<?php
  $data=' <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <table border="1">
        <tr><td>Travička</td><td>5 Kč</td></tr>
        <tr><td>Kravička</td><td>500 Kč</td></tr>
      </table>';
  $fp = fopen ("calc_03.xls", "w");
  fwrite ($fp, $data);
  fclose ($fp);


PS: pojmenovávat to *.xls je zavádějící, tohle nejsou soubory Excelu.
PS2: „Vytvoří mě soubor do Excellu
Excel se píše jen s jedním L. Mně pomíjím :-)
Radek Cvek
Profil
Alphard:
Supr - díky. Já s eNkama můžu šetřit, ale že miliardová společnost šetří s eLkama, mě překvapilo.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0