Php, excel, UTF-8

Php, excel, UTF-8

offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Kreirao sam neku moju klasu koja cuva fajl u .xls...
Sve sam sam napravio i unos delimitera i svega ostalog.
To sve super radi i lepo se prikazuje u excel-u ali problem nastaje kada treba sacuvati text koji je utf-8... Tada one znake koji ne pripadaju Latin charset-u excel prikazuje skroz drugacije.
Kada fajl cuvam kao obican txt sve se lepo prikazuje u notepad-u.
Ima li neko ideju kako ovo resiti?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Imam ja Wink zato sto sam muku mucio sa tim excelom i geniJom (Wink) koji je smislio da Excel jedini na sveti koristi UTF16LE encoding...

doduse, ja sam imao problem pri obrnutom procesu - citanju iz excel fajlova... evo kako sam ga resio:

1) rec koju obradjujes proveravas slovo po slovo - tj izvlacis slovo po slovo iz reci u neku temp promenljivu...

2) "raspakujes" slovo u hex kod koristeci unpack()

3) proveris da li se hex cod poklapa sa hex codom nekog od nasih slova - najlakse je da napravis jedan excel fajl sa po jednim nasim slovom u celiji i raspakujes ga da dobijes hex kod

4) str_replace hex cod UTF16LE slova sa hex kodom odgovarajuceg UTF slova

5) vratis slovo na mesto

6) kad zavrsis sve "zapakujes" rec nazad sa pack()

e sad, tebi treba obrnut proces, sto ne bi bilo mnogo komplikovanije od ovoga, a videcu kasnije da nadjem moju f-ju za ovo sto sam opisao, sad sam u zurbi, moram u vojsku Mr. Green



offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Hvala, probacu...
Inace meni ne treba za nasa slova vec za spanska tj. portugalska Mr. Green

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

onda ti je samo duza provera, tj vise str_replace() f-ja koristis, a ideja je ista Wink

offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Digao sam ruke od moje klase Very Happy...
Sada koristim excel write i excel reader. Evo sta je sve potrebno za to:

http://pear.php.net/OLE
http://pear.php.net/Spreadsheet_Excel_Writer
http://sourceforge.net/projects/phpexcelreader
http://pear.php.net/package/PEAR/

a evo i kako to koristiti:
http://www.sitepoint.com/article/pear-spreadsheet_excel_writer

Dopuna: 29 Jul 2007 17:37

Neverovatno... kako sam samo bio glup.

Trebalo je samo staviti utf8_decode($string) pre nego sto sacuvam... Izgubio sam skoro 2 dana zbog ove gluposti.
@ Rastafarii
Ti bi u tvojoj skripti mogao da probas obrnuto od ovog mog, utf8_encode() Wink

offline
  • pixelz 
  • Novi MyCity građanin
  • Pridružio: 27 Sep 2007
  • Poruke: 1
  • Gde živiš: Vranje

OK, phpexcelreader radi super, ali imam problema sa nasim slovima. Probao sam da stavim


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" /> <title>Excel Reader Test Page</title> </head> <body> <?php require_once 'excel/reader.php'; $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('windows-1250'); $data->read('Book1.xls'); error_reporting(E_ALL ^ E_NOTICE); for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {    for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {       echo "&nbsp;&nbsp;".$data->sheets[0]['cells'][$i][$j]."&nbsp;&nbsp;";    }    echo "<br />"; } ?> </body> </html>

Probao sam i sa $data->setOutputEncoding('UTF-8'); i ne funkcionise. Da li treba nesto da se podesi na serveru? (iconv je ukljucen)

offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

A jesi li probao utf8_decode/utf8_encode?

Mada, mislim da ti je greska ovde:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />

Treba da stoji:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Ko je trenutno na forumu
 

Ukupno su 824 korisnika na forumu :: 7 registrovanih, 2 sakrivenih i 815 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: bato, Kriglord, radionica1, vranjanac29, wizzardone, wolverined4, Čivi