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:

[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]

a evo i kako to koristiti:
[Link mogu videti samo ulogovani korisnici]

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 1373 korisnika na forumu :: 144 registrovanih, 12 sakrivenih i 1217 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 6018 - dana 19 Dec 2025 13:41

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, adapter55, Agape, ajo baba, alberto, alex71, amonsrb, Aristotle2002, Asparagus, Asteker, Avalon015, Avijatičar, bambulic, Baždaranac, bokicacar, Bombarder, Boris BM, boskelazo, Botovac, boxbole, BraneS, Bubimir, BZ, chichabg, cifra, darcaud, Darko Jovanovic, debeli, Demi87, desmeki, Despot Đurađ, Despot1, Djokislav, djonsule, Dorcolac, draganl, drale12, Duce, dule10savic, dulleo, Dzambas, DzigiNS, Džekson, Electron, Fructo, Geodezist58, Geran136, Giro77, Giskard, Great White, havoc995, HogarStrashni, Holy Saber, HrcAk47, iceburn, Insan, ivan_8282, jarovitt, joca83, Kajzer Soze, Kamov, keyz, kila011, Komentator, Kubovac, kunktator, kybonacci, Leteća Krofna, Levi, liki83, Lucije Kvint, M74AB3, Manjane, marko.markovic, markolopin, Meklejn, mercedesamg, Metanoja, miljannis, Milos1389, mkukoleca, momcilob55, MrNo, Nemanja Opalić, nenad81, novator, operniki, Orc, Orijen, ozzy, Paklenica, Pavel Medved, pedja.st, pein, Pero Petković, Podmukli neprijatelj, PoolbegD02, precan, procesor, RajkoB, raster12, redstar72, repac, rr559, RS28, sales, sap, sekretar, sevenino, Simonsen23, Siti2, Smajser, Smiljkovich, sombrero, spot4chulle, stankolich, stibium51, Su 57, suton, Tandrčak, Tas011, tecataki, Titan, tubular, UAV operator, vaci, Velibor Radoja, virked, Vlada1389, vladetije, voja64, Vojin, vojnik švejk, Vrač, wizzardone, wolverined4, xAlex2, zastavnik, zmajbre, zubri, Zukov, Zvrk, zzapNDjuric99, Žrnov