Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: generowanie pliku Excel - problem z polskimi znakami
Forum PHP.pl > Forum > PHP
smiady
Witam.

generuje plik Excel podając ze zwykłego headera:
  1. header("Content-Type: application/vnd.ms-excel; charset=utf-8");
  2. header("Content-Disposition: attachment; filename=czlonkowie_wspierajacy.xls");
  3. header("Expires: 0");
  4. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  5. header("Cache-Control: private",false);

a następnie generuje zwykłą htmlowską tabelkę.
Niestety nie generuje mi polskich liter (mam krzaczki).
Gdy zmieniam kodowanie pliku z UTF8 (BEZ BOM) na UTF8 (bo chyba to powinno pomóc) to niestety wystakuje mi błąd:
Warning: Cannot modify header information - headers already sent by (output started at ...
Dane do tabeli pochodzą z bazy danych i jest jako pierwsze zapytanie SET NAMES utf8
Wiem, że istnieją po sieci klasy, które generują dane do excela, ale mimo to wole skorzystać z tego rozwiązania.
Będę bardzo wdzięczny jak ktoś mi pomoże smile.gif
Turson
Tylko nie mów, że podczas wysyłania swojego posta nie wyskoczył ci komunikat, że temat 'Headers already sent' był omawiany wiele razy
http://phpedia.pl/wiki/Cannot_add_header_i...rs_already_sent
smiady
To, więc problem jest z kodowaniem. To na jaki mam zmienić, żeby header nie krzyczał, a były polskie znaki ?
Turson
Ustaw UTF-8 bez bom a co do błędu to w linku co podalem jest rozwiazanie
smiady
Cytat(Turson @ 7.05.2014, 20:56:43 ) *
Ustaw UTF-8 bez bom a co do błędu to w linku co podalem jest rozwiazanie


Ustawiony jest UTF-8 bez bom i działa header (header się sypał gdy był utf8).
Mam krzaczki z polskich znaków jak rozwiązać ten problem ?
Turson
Właśnie przetestowałem to w Notepad++
Format pliku UTF-8 bez bom
  1. ob_start();
  2. header("Content-Type: application/vnd.ms-excel; charset=utf-8");
  3. header("Content-Disposition: attachment; filename=czlonkowie_wspierajacy.xls");
  4. header("Expires: 0");
  5. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  6. header("Cache-Control: private",false);
  7. ?>
  8. <!DOCTYPE html>
  9. <head>
  10. <meta charset="utf-8">
  11. </head>
  12. <body>
  13. <table>
  14. <tr><td>łóżźśęćśół</td></tr>
  15. </table>
  16. <?php ob_end_flush(); ?>

są polskie znaki
smiady
Dzięki za pomoc.

Sprawę załatwił znacznik meta, którego nie miałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.