Onko kenelläkään kokemusta kuinka php ods luokkaa käyttämällä voidaan kirjoittaa ods tiedostoon?
http://sourceforge.net/search/?type_of_search=soft&type_of_search=soft&words=php ods
Eikö tuo paketin mukana tuleva example.php sitten toimi?
<?php #luonti tai avaus $ods = newOds(); //create a new ods file // tai $ods = parseOds('new.ods'); //load an ods file # ja talletus saveOds($ods, 'new.ods'); //save ?>
Toimii varmasti jos osaa :)
Mulle tuli seuraava ilmoitus ja siitä seurasi vielä lisäkysymyskin.
mitä tämä tekee get_tmp_dir();?
Warning: file_get_contents(C:\DOCUME~1\Niina\LOCALS~1\
timppa77 kirjoitti:
Toimii varmasti jos osaa :)
Warning: file_get_contents(C:\DOCUME~1\Niina\LOCALS~1\
Temp\/49d8829eaba98/content.xml) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Documents and Settings\Eclipse_workspace\write to ods\ods.php on line 268
Tuosta ei kai virheilmoitus juuri parane, joten tuon täytyy ihan oikeasti avautua ilman apua. Kansiossa ei ole annetun nimistä tiedostoa. Virheilmoituksessa on annettu jopa virheen aiheuttavan tiedoston rivi, joka pitää muuttaa.
Ennen itse luokkakoodin muuttamista kannattanee kuitenkin ensin varmistaa, ettei virhe ole siellä omassa koodissa. Vaikka kyllä luokasta pitäisi tuon verran löytyä virheenkäsittelyä.
get_temp_dir
mitä luultavimmin hakee temppikansion polun. Voit tutkia tuon luokan koodia myös itse, kts. ods.php.
Jos ketään enää kiinnostaa, niin...
edelleen tulee sama ilmoitus, koska teidostoa ei ole kansiossa 49d8d57676420, vaan juuri siinä toisessa, jonka alla oleva luo.
Warning: file_get_contents(C:\Documents and Settings\Eclipse_workspace\write/tmp/49d8d57676420/content.xml) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Documents and Settings\Eclipse_workspace\write\ods.php on line 268
<?php function parseOds($file) { $tmp = "C:\Documents and Settings\Eclipse_workspace\write/tmp"; copy($file,$tmp.'/'.basename($file)); $path = $tmp.'/'.basename($file); $uid = uniqid(); mkdir($tmp.'/'.$uid); shell_exec('unzip '.escapeshellarg($path).' -d '.escapeshellarg($tmp.'/'.$uid)); $obj = new ods(); $obj->parse(file_get_contents($tmp.'/'.$uid.'/content.xml')); return $obj; } function saveOds($obj,$file) { $charset = ini_get('default_charset'); ini_set('default_charset', 'UTF-8'); $tmp = "C:\Documents and Settings\Eclipse_workspace\write/tmp"; $uid = uniqid(); mkdir($tmp.'/'.$uid); file_put_contents($tmp.'/'.$uid.'/content.xml',$obj->array2ods()); file_put_contents($tmp.'/'.$uid.'/mimetype','application/vnd.oasis.opendocument.spreadsheet'); file_put_contents($tmp.'/'.$uid.'/meta.xml',$obj->getMeta('es-ES')); file_put_contents($tmp.'/'.$uid.'/styles.xml',$obj->getStyle()); file_put_contents($tmp.'/'.$uid.'/settings.xml',$obj->getSettings()); mkdir($tmp.'/'.$uid.'/META-INF/'); mkdir($tmp.'/'.$uid.'/Configurations2/'); mkdir($tmp.'/'.$uid.'/Configurations2/acceleator/'); mkdir($tmp.'/'.$uid.'/Configurations2/images/'); mkdir($tmp.'/'.$uid.'/Configurations2/popupmenu/'); mkdir($tmp.'/'.$uid.'/Configurations2/statusbar/'); mkdir($tmp.'/'.$uid.'/Configurations2/floater/'); mkdir($tmp.'/'.$uid.'/Configurations2/menubar/'); mkdir($tmp.'/'.$uid.'/Configurations2/progressbar/'); mkdir($tmp.'/'.$uid.'/Configurations2/toolbar/'); file_put_contents($tmp.'/'.$uid.'/META-INF/manifest.xml',$obj->getManifest()); shell_exec('cd '.$tmp.'/'.$uid.';zip -r '.escapeshellarg($file).' ./'); ini_set('default_charset',$charset); }
Mod. lisäsi kooditagit
No älä sitten yritä avata tiedostoa, jota ei ole, vaan avaa se, joka on. Mikä tässä on ongelmana?
No se kun toi näyttää mun mielestä olevan niin kuin sen pitäisikin
Luokan muokkaus pitäisi olla aina se viimeinen vaihtoehto, ja silloinkin: Älä kovakoodaa luokkaan sisälle noita polkuja, vaan muuta sen toiminnallisuutta siten, että luokka toimii oikein (jos se on vaikka särki, tässä esim. kun on kuitenkin kyseessä vasta rc1-versio), sen toiminnallisuus on parametreilla muutettavissa ja se reagoi virhetilanteisiin oikein.
Nythän luokka ei esim. ota huomioon zip
- ja unzip
-ohjelmien puuttumista, mikä sitten johtaa tuon file_get_contentsin
epäonnistumiseen. Noita zippityökaluja ei muistaakseni taida tulla Windowsin mukana, löytyvät esim. GnuWin32:sta.
Tutustuitko Metabolix aiheeseen ollenkaan?
Aihe on jo aika vanha, joten et voi enää vastata siihen.