OpenOffice bestand uitlezen (.xml)
Bij mijn stage word een hoop gedaan met OpenOffice bestanden (.ods). Ik ben momenteel bezig met een projectje om deze ods bestanden te kunnen uitlezen. Het is me gelukt om de ods bestanden op te slaan als CSV, en deze vervolgens uit te lezen. Helaas kan je CSV niet gebruiken als je OpenOffice bestand met meerdere tab-bladen werkt.
Om deze reden ben ik wat research gaan doen, en toen kwam ik erachter dat je het .ods bestand kunt "unzippen", waarna je een aantal .xml bestanden krijgt. Voor zover ik weet kan je .xml uitlezen met PHP.
Mijn vraag is nu:
Is dit lastig? Heeft 1 van jullie hier ervaring mee? Zal ik dit met mijn huidige (vrij weinig) php kennis kunnen doen, of is het verstandig om hiervoor OOP te leren?
Ik ben wat tutorials gaan zoeken op het internet, maar ik kon hier niet echt iets nuttigs over vinden.
Alvast bedankt :)
EDIT:
Voor de geintresseerden,
Ik heb een handige link gevonden die hierop aansluit:
https://github.com/PHPOffice/PHPExcel
Gewijzigd op 12/12/2012 14:00:33 door Max -
Dit is een open source project voor php-ods
Gevonden met 'open .ods with php' als Google zoekopdracht.
Gewijzigd op 12/12/2012 09:36:05 door Chris PHP
Gewijzigd op 12/12/2012 09:41:23 door Max -
Max - op 12/12/2012 09:38:50:
Die had ik ook al gevonden, het lastige is dat die code niet echt duidelijk word uitgelegd met bijvoorbeeld comments.
Example.php deze wordt in de .zip meegeleverd. Lijkt me vrij duidelijk toch?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
/*
ods-php a library to read and write ods files from php.
This library has been forked from eyeOS project and licended under the LGPL3
terms available at: http://www.gnu.org/licenses/lgpl-3.0.txt (relicenced
with permission of the copyright holders)
Copyright: Juan Lao Tebar ([email protected]) and Jose Carlos Norte ([email protected]) - 2008
https://sourceforge.net/projects/ods-php/
*/
include("ods.php"); //include the class and wrappers
$object = newOds(); //create a new ods file
$object->addCell(0,0,0,1,'float'); //add a cell to sheet 0, row 0, cell 0, with value 1 and type float
$object->addCell(0,0,1,2,'float'); //add a cell to sheet 0, row 0, cell 1, with value 1 and type float
$object->addCell(0,1,0,1,'float'); //add a cell to sheet 0, row 1, cell 0, with value 1 and type float
$object->addCell(0,1,1,2,'float'); //add a cell to sheet 0, row 1, cell 1, with value 1 and type float
saveOds($object,'/tmp/new.ods'); //save the object to a ods file
$object=parseOds('/tmp/new.ods'); //load the ods file
$object->editCell(0,0,0,25); //change the value for the cell in sheet 0, row 0, cell 0, to 25
saveOds($object,'/tmp/new2.ods'); //save with other name
?>
/*
ods-php a library to read and write ods files from php.
This library has been forked from eyeOS project and licended under the LGPL3
terms available at: http://www.gnu.org/licenses/lgpl-3.0.txt (relicenced
with permission of the copyright holders)
Copyright: Juan Lao Tebar ([email protected]) and Jose Carlos Norte ([email protected]) - 2008
https://sourceforge.net/projects/ods-php/
*/
include("ods.php"); //include the class and wrappers
$object = newOds(); //create a new ods file
$object->addCell(0,0,0,1,'float'); //add a cell to sheet 0, row 0, cell 0, with value 1 and type float
$object->addCell(0,0,1,2,'float'); //add a cell to sheet 0, row 0, cell 1, with value 1 and type float
$object->addCell(0,1,0,1,'float'); //add a cell to sheet 0, row 1, cell 0, with value 1 and type float
$object->addCell(0,1,1,2,'float'); //add a cell to sheet 0, row 1, cell 1, with value 1 and type float
saveOds($object,'/tmp/new.ods'); //save the object to a ods file
$object=parseOds('/tmp/new.ods'); //load the ods file
$object->editCell(0,0,0,25); //change the value for the cell in sheet 0, row 0, cell 0, to 25
saveOds($object,'/tmp/new2.ods'); //save with other name
?>
Om deze reden moet ik dus weten hoe je een paar elementen kan vinden in het xml bestand, en alleen met deze elementen iets doen. Nu ga ik hier niet vragen hoe dat moet, ik heb nog een aantal maanden om dat uit te zoeken.
Mijn vraag is meer of het verstandig is om hiervoor iets van OOP af te weten, of dat dit al mogelijk is met wat research werk. Daarom vroeg ik ook of er hier leden zijn die er al eerder mee gewerkt hebben.
Bedankt voor je vlotte reacties trouwens ;)
OOP is voor dit soort dingen altijd makkelijk, vandaar dat ook die ods-php in OOP geschreven is. Het is makkelijk te 'herbruiken' een toekomstige projecten enzo.
Ik heb zelf nog nooit een ods -> xml verwerking gemaakt, wel heb ik met Excel/CVS gewerkt. Wat je kunt doen is de verschillende tabbladen uit je ods een eigen xml bestand van maken.
In de $object->addCell is de eerste interger de sheet, dus vanuit daar kun je alles uit sheet 0 (de eerste sheet) uitlezen en in een xml document zetten. Zo ga je ook verder voor alle andere sheets. Voor php-xml zijn genoeg tutorials te vinden.
Graag gedaan :-)
Gewijzigd op 12/12/2012 10:47:28 door Chris PHP
Quote:
In de $object->addCell is de eerste interger de sheet, dus vanuit daar kun je alles uit sheet 0 (de eerste sheet) uitlezen en in een xml document zetten. Zo ga je ook verder voor alle andere sheets. Voor php-xml zijn genoeg tutorials te vinden.
Hier heb ik wat aan, hartelijk bedankt! Tijd om nog wat meer research uit te voeren dus :)
Graag gedaan, succes!