Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHPExcel a polskie znaki
Forum PHP.pl > Forum > PHP
ladovnik
Witam. Chciałem utworzyć arkusz kalkulacyjny z wykorzystaniem skryptu PHPExcel. Udało się, lecz przy wypełnianiu komórek w momencie pojawienia się polskiego znaku słowo jest urywane. Jak temu zaradzić?

Kod:
  1. $file_name='arkusz.xls';
  2.  
  3. // PHPExcel
  4. include 'PHPExcel/PHPExcel.php';
  5. include 'PHPExcel/PHPExcel/IOFactory.php';
  6.  
  7. $PHPExcel = new PHPExcel();
  8. $PHPExcel->removeSheetByIndex(0);
  9.  
  10. // Create sheet
  11. $Sheet=$PHPExcel->createSheet();
  12. $Sheet->setCellValue ('B2', 'Kolumna 1');
  13. $Sheet->setCellValue ('C2', 'Kolumna 2');
  14. $Sheet->setCellValue ('D2', 'Kolumna 3');
  15. $Sheet->setCellValue ('E2', 'Kolumna 4');
  16. $Sheet->setCellValue ('F2', 'Różnica');
  17.  
  18. $Sheet->getColumnDimension('C')->setWidth(12);
  19. $Sheet->getColumnDimension('E')->setWidth(12);
  20. $Sheet->getColumnDimension('F')->setWidth(12);
  21.  
  22. // Genere excel file
  23. header('Content-Type: application/vnd.ms-excel');
  24. header('Content-Disposition: attachment;filename="'.$file_name.'"');
  25. header('Cache-Control: max-age=0');
  26.  
  27. $Writer = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5');
  28. $Writer->setTempDir("./");
  29. $Writer->save('php://output');


Pozdrawiam,
ladovnik
-=Peter=-
Z tego co pamiętam (google mi trochę odświeżyło pamięć) to aby poprawnie zapisać ciąg znaków np. w utf-8 to trzeba zrobić:

  1. $writer->setVersion(8);//to wywołanie jest wbrew pozorom bardzo ważne ;)
  2. $arkusz->setInputEncoding('utf-8');
ladovnik
W obu przypadkach mam błąd mówiący o nieistniejącej metodzie. Sprawdziłem w dokumentacji i wynika z niej, że metoda setInputEncoding należy do klas PHPExcel_Reader_CSV oraz PHPExcel_Reader_SYLK jednak nie wiem co ich wykorzystanie by dało, skoro ja zapisuję, a nie odczytuję plik. Natomiast metoda setVersion w ogóle nie istnieje. Dane według dokumentacji najnowsze wersji, czyli 1.7.4.

Dodałem do pierwszego posta mój kod.
Pilsener
Excel pachnie windowsem, zatem musisz przekonwertować stringi na kodowanie windows zanim wyślesz je do metody zapisującej plik xls.
ladovnik
Skonwertować stringi na kodowanie windowsowe... no tak, tylko jak to zrobić w przypadku tej klasy?
Pilsener
Klasa sama tego nie zrobi, bo służy tylko do zapisu, musisz sam przekonwertować stringi korzystając z funkcji iconv czy dodatku mb_* http://pl2.php.net/manual/en/ref.mbstring.php

Ale jest niuans: z kodowaniem windows mogą być problemy, można też przekonwertować UTF na ISO a potem podmienić odpowiednie znaki funkcją strtr.
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.