Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php ods luokka

Sivun loppuun

timppa77 [05.04.2009 12:38:21]

#

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

tsuriga [05.04.2009 12:49:11]

#

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

?>

timppa77 [05.04.2009 13:11:25]

#

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\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

Teuro [05.04.2009 13:19:48]

#

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.

tsuriga [05.04.2009 14:04:41]

#

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.

timppa77 [05.04.2009 19:12:57]

#

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

Metabolix [05.04.2009 19:42:59]

#

No älä sitten yritä avata tiedostoa, jota ei ole, vaan avaa se, joka on. Mikä tässä on ongelmana?

timppa77 [05.04.2009 19:53:23]

#

No se kun toi näyttää mun mielestä olevan niin kuin sen pitäisikin

tsuriga [05.04.2009 20:06:45]

#

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?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta