J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire
des fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV.
Le tout, de façon complètement automatique.
Pour l'instant, la seule piste que je vois, c'est de lire et écrire en
XML (ou plus précisément Opendocument), et utiliser Openoffice pour
convertir.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à
explorer ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Maurette
Fabien LE LEZ, le 04/12/2008 a écrit :
Bonjour,
J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire des fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV. Le tout, de façon complètement automatique.
Pour l'instant, la seule piste que je vois, c'est de lire et écrire en XML (ou plus précisément Opendocument), et utiliser Openoffice pour convertir.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à explorer ?
Il existe le module python "Python XLS Reader": <URL:http://pyxlreader.sourceforge.net/>
Le readme.txt donne des liens vers des solutions en Perl, PHP et Java, je le colle pour info:
<pyxlreader - readme.txt> pyXLReader ================= pyXLReader is a Python library for reading Excel compatible spreadsheets. It's a port of JAVA jexcelapi and PHP Spreadsheet-Excel-Reader to Python. It allows reading of Excel compatible spreadsheets without the Windows.
Requires Python 2.2+
Authors, copyright, and license ============================== pyXLReader was ported by Ilia Harlamov from jexcelapi and Spreadsheet-Excel-Reader (URL see below)
Copyright (c) 2005 Ilia Harlamov Copyright (c) 2004 Vadim Tkachenko (Spreadsheet-Excel-Reader) Copyright (c) ???? Andy Khan (jexcelapi)
Distribution's license is GNU LGPL. The included LICENSE.txt file describes this in detail.
J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire
des fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV.
Le tout, de façon complètement automatique.
Pour l'instant, la seule piste que je vois, c'est de lire et écrire en
XML (ou plus précisément Opendocument), et utiliser Openoffice pour
convertir.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à
explorer ?
Il existe le module python "Python XLS Reader":
<URL:http://pyxlreader.sourceforge.net/>
Le readme.txt donne des liens vers des solutions en Perl, PHP et Java,
je le colle pour info:
<pyxlreader - readme.txt>
pyXLReader
================= pyXLReader is a Python library for reading Excel compatible
spreadsheets.
It's a port of JAVA jexcelapi and PHP Spreadsheet-Excel-Reader to
Python.
It allows reading of Excel compatible spreadsheets without the Windows.
Requires Python 2.2+
Authors, copyright, and license
==============================
pyXLReader was ported by Ilia Harlamov from
jexcelapi and Spreadsheet-Excel-Reader (URL see below)
Copyright (c) 2005 Ilia Harlamov <yadra@users.sourceforge.net>
Copyright (c) 2004 Vadim Tkachenko <vt@apachephp.com>
(Spreadsheet-Excel-Reader)
Copyright (c) ???? Andy Khan (jexcelapi)
Distribution's license is GNU LGPL. The included LICENSE.txt file
describes
this in detail.
J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire des fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV. Le tout, de façon complètement automatique.
Pour l'instant, la seule piste que je vois, c'est de lire et écrire en XML (ou plus précisément Opendocument), et utiliser Openoffice pour convertir.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à explorer ?
Il existe le module python "Python XLS Reader": <URL:http://pyxlreader.sourceforge.net/>
Le readme.txt donne des liens vers des solutions en Perl, PHP et Java, je le colle pour info:
<pyxlreader - readme.txt> pyXLReader ================= pyXLReader is a Python library for reading Excel compatible spreadsheets. It's a port of JAVA jexcelapi and PHP Spreadsheet-Excel-Reader to Python. It allows reading of Excel compatible spreadsheets without the Windows.
Requires Python 2.2+
Authors, copyright, and license ============================== pyXLReader was ported by Ilia Harlamov from jexcelapi and Spreadsheet-Excel-Reader (URL see below)
Copyright (c) 2005 Ilia Harlamov Copyright (c) 2004 Vadim Tkachenko (Spreadsheet-Excel-Reader) Copyright (c) ???? Andy Khan (jexcelapi)
Distribution's license is GNU LGPL. The included LICENSE.txt file describes this in detail.
Le Thu, 04 Dec 2008 05:39:51 +0100, Fabien LE LEZ a écrit :
J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire des fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV. Le tout, de façon complètement automatique.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à explorer ?
Oui et ce directement à partir du format natif MS Office avec unoconv et en utilisant openoffice en headless sous forme de service.
Je n'ai pas sous la main la configuration exacte que j'ai mise en place au boulot, mais si tu souhaites, je te la donnerai.
-- Stéphan Peccini Les photos : <URL:http://photonature.fr> Les Pyrénées : <URL:http://photonature.fr/pyrenees> Le blog : <URL:http://pyrenees.peccini.fr>
Le Thu, 04 Dec 2008 05:39:51 +0100, Fabien LE LEZ a écrit :
J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire des
fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV. Le tout,
de façon complètement automatique.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à
explorer ?
Oui et ce directement à partir du format natif MS Office avec unoconv et
en utilisant openoffice en headless sous forme de service.
Je n'ai pas sous la main la configuration exacte que j'ai mise en place au
boulot, mais si tu souhaites, je te la donnerai.
--
Stéphan Peccini
Les photos : <URL:http://photonature.fr>
Les Pyrénées : <URL:http://photonature.fr/pyrenees>
Le blog : <URL:http://pyrenees.peccini.fr>
Le Thu, 04 Dec 2008 05:39:51 +0100, Fabien LE LEZ a écrit :
J'aurais besoin, sur un serveur web (Debian Etch), de lire et écrire des fichiers au format XLS (Excel 97). J'ai bien dit XLS, pas CSV. Le tout, de façon complètement automatique.
Est-ce faisable de façon automatique ? Y a-t-il d'autres pistes à explorer ?
Oui et ce directement à partir du format natif MS Office avec unoconv et en utilisant openoffice en headless sous forme de service.
Je n'ai pas sous la main la configuration exacte que j'ai mise en place au boulot, mais si tu souhaites, je te la donnerai.
-- Stéphan Peccini Les photos : <URL:http://photonature.fr> Les Pyrénées : <URL:http://photonature.fr/pyrenees> Le blog : <URL:http://pyrenees.peccini.fr>
Fabien LE LEZ
On 4 Dec 2008 06:34:17 GMT, Stephan Peccini :
Je n'ai pas sous la main la configuration exacte que j'ai mise en place au boulot, mais si tu souhaites, je te la donnerai.
Je veux bien. Merci.
On 4 Dec 2008 06:34:17 GMT, Stephan Peccini <stephan@photonature.fr>:
Je n'ai pas sous la main la configuration exacte que j'ai mise en place au
boulot, mais si tu souhaites, je te la donnerai.
cd /tmp wget http://ftp.fr.debian.org/debian/pool/main/u/unoconv/unoconv_0.3-3_all.deb dpkg -i unoconv_0.3-3_all.deb && rm unoconv_0.3-3_all.deb
Grâce à "-headless", mon fichier /etc/init.d/unoconv-listen est un poil plus simple que le tien (cf plus bas). Ne pas oublier de l'activer : chmod u+x /etc/init.d/unoconv-listen update-rc.d unoconv-listen defaults
J'ai perdu du temps sur un problème tout con : par défaut sous Debian, www-data n'a pas accès en écriture à son propre répertoire home, empêchant Openoffice de créer son répertoire de config. Du coup, soffice.bin se lance, mais est inactif.
Il faut donc créer un sous-répertoire ".openoffice.org2", et le donner à www-data : chown www-data .openoffice.org2
Enfin bon, ça a l'air de fonctionner. Je vais donc enfin pouvoir filer des .xls à mes visiteurs :-)
Par contre, dans l'autre sens (un visiteur m'envoie un .xls), je vais plutôt utiliser <http://pear.php.net/package/Spreadsheet_Excel_Reader/>. En effet, même si Openoffice est moins troué que MS Office, c'est quand même une usine à gaz, et je ne suis pas très chaud pour lui faire ouvrir un fichier peut-être uploadé par un attaquant.
Fichier /etc/init.d/unoconv-listen :
#!/bin/sh # # openofficeorg This shell script takes care of starting and stopping # openoffice server. # description: unoconv listener for converting documents with OOo
. /lib/lsb/init-functions
# See how we were called. case "$1" in start) printf "Starting unoconvd: " su - www-data -c "/usr/bin/unoconv --listener&" echo ;; stop) printf "Shutting down unoconvd: " killall soffice.bin echo ;; restart) $0 stop $0 start ;; *) printf "Usage: unoconvd {start|stop|restart}n" exit 1 ;; esac
exit 0
On Thu, 4 Dec 2008 00:52:12 -0800 (PST), stephan@photonature.fr:
Tu a besoin de Xvfb, openoffice avec pyuno et headless et unoconv :
Merci. J'ai un peu transformé ton script, car les versions plus
récentes de Openoffice ont une option "-headless" qui leur permet de
se passer de X.
cd /tmp
wget
http://ftp.fr.debian.org/debian/pool/main/u/unoconv/unoconv_0.3-3_all.deb
dpkg -i unoconv_0.3-3_all.deb && rm unoconv_0.3-3_all.deb
Grâce à "-headless", mon fichier /etc/init.d/unoconv-listen est un
poil plus simple que le tien (cf plus bas). Ne pas oublier de
l'activer :
chmod u+x /etc/init.d/unoconv-listen
update-rc.d unoconv-listen defaults
J'ai perdu du temps sur un problème tout con : par défaut sous Debian,
www-data n'a pas accès en écriture à son propre répertoire home,
empêchant Openoffice de créer son répertoire de config. Du coup,
soffice.bin se lance, mais est inactif.
Il faut donc créer un sous-répertoire ".openoffice.org2", et le donner
à www-data :
chown www-data .openoffice.org2
Enfin bon, ça a l'air de fonctionner. Je vais donc enfin pouvoir filer
des .xls à mes visiteurs :-)
Par contre, dans l'autre sens (un visiteur m'envoie un .xls), je vais
plutôt utiliser
<http://pear.php.net/package/Spreadsheet_Excel_Reader/>. En effet,
même si Openoffice est moins troué que MS Office, c'est quand même une
usine à gaz, et je ne suis pas très chaud pour lui faire ouvrir un
fichier peut-être uploadé par un attaquant.
Fichier /etc/init.d/unoconv-listen :
#!/bin/sh
#
# openofficeorg This shell script takes care of starting and stopping
# openoffice server.
# description: unoconv listener for converting documents with OOo
. /lib/lsb/init-functions
# See how we were called.
case "$1" in
start)
printf "Starting unoconvd: "
su - www-data -c "/usr/bin/unoconv --listener&"
echo
;;
stop)
printf "Shutting down unoconvd: "
killall soffice.bin
echo
;;
restart)
$0 stop
$0 start
;;
*)
printf "Usage: unoconvd {start|stop|restart}n"
exit 1
;;
esac
cd /tmp wget http://ftp.fr.debian.org/debian/pool/main/u/unoconv/unoconv_0.3-3_all.deb dpkg -i unoconv_0.3-3_all.deb && rm unoconv_0.3-3_all.deb
Grâce à "-headless", mon fichier /etc/init.d/unoconv-listen est un poil plus simple que le tien (cf plus bas). Ne pas oublier de l'activer : chmod u+x /etc/init.d/unoconv-listen update-rc.d unoconv-listen defaults
J'ai perdu du temps sur un problème tout con : par défaut sous Debian, www-data n'a pas accès en écriture à son propre répertoire home, empêchant Openoffice de créer son répertoire de config. Du coup, soffice.bin se lance, mais est inactif.
Il faut donc créer un sous-répertoire ".openoffice.org2", et le donner à www-data : chown www-data .openoffice.org2
Enfin bon, ça a l'air de fonctionner. Je vais donc enfin pouvoir filer des .xls à mes visiteurs :-)
Par contre, dans l'autre sens (un visiteur m'envoie un .xls), je vais plutôt utiliser <http://pear.php.net/package/Spreadsheet_Excel_Reader/>. En effet, même si Openoffice est moins troué que MS Office, c'est quand même une usine à gaz, et je ne suis pas très chaud pour lui faire ouvrir un fichier peut-être uploadé par un attaquant.
Fichier /etc/init.d/unoconv-listen :
#!/bin/sh # # openofficeorg This shell script takes care of starting and stopping # openoffice server. # description: unoconv listener for converting documents with OOo
. /lib/lsb/init-functions
# See how we were called. case "$1" in start) printf "Starting unoconvd: " su - www-data -c "/usr/bin/unoconv --listener&" echo ;; stop) printf "Shutting down unoconvd: " killall soffice.bin echo ;; restart) $0 stop $0 start ;; *) printf "Usage: unoconvd {start|stop|restart}n" exit 1 ;; esac