Premessa: si lo so ultimamente non bazzico più da queste parti ...

.... ma ho molto lavoro

Giusto ieri l'altro un cliente a cui avevo preparato un modello calc per le fatture mi chiede se è possibile ottenere una sorta di prima nota .. in modo più o meno automatico.
Le fatture sono circa 170. Quindi 170 file diversi.
Ora non che io sia un guru di office e/o di OOo .... ma cavolo! .. non ho proprio trovato nulla.
A quanto sembra non si può!
Non so come ma lui me li ha salvati tutti in xls

... perchè dico io .... cmq ... st. google ci aiuta sempre ed ecco che finisco per trovare una utility in java che si chiama JODConverter (
http://artofsolving.com/opensource/jodconverter). Questa converte più o meno tutto in tutto.
Capisco che c'è una sola strada: bash!
Mi metto al lavoro.
Solo un piccolo intoppo (e chiesto aiuto al forum ieri sera) xchè non mi ero accorto che i nomi file avevano degli spazi

Ok ... l'idea è questa:
- elimino gli spazi
- converto in csv con JODConverter
- estraggo la i dati che mi servono (numero fattura, data, nome, importo) ... da tutti i file (ciclo!!!)
- assemblo un nuovo csv con i dati (idea!! metto in mezzo dei ";" xchè le virgole ci sono già nei decimali dell'importo!!)
- faccio aprire da calc e salvo in xls .. o ods che è meglio
lo script ... udite udite è andato su al primo colpo .. solo un piccolo stop: JODConverter richiede OOo avviato e questo mi occupava un terminale e non mi permetteva la prosecuzione delle operazioni ... è bastato mettere un "&" davanti
eccolo ... testato .. ha fatto il lavoro in pochi istanti:
#!/bin/sh
# Script Bash by F3d7
#
# Prima nota: lo scipt converte i file ODS e/o XLS in CSV
# estrae da questi il numero fattura, la data, il nome e l'importo
# li assembla in un nuovo file CSV pronto per CALC
#
# Release 0.0.2
# del 3/7/2008
#
# Enjoy!!!!!!!!!
#
#
# elimino gli spazi dei file
echo "##### Prima Nota 1.0 ####"
echo "by F3d7"
#
echo "Rimuovo gli spazi"
percorso=$PWD
echo "Nome cartella?"
read cartella
cd $percorso"/"$cartella
for nomefile in *
do
mv "$nomefile" $(echo "$nomefile" | tr " " "_")
done
#
echo "Fatto!! Ho rimosso gli spazi dai nomi dei file ;)"
# converto i file xls e/o ods in csv
echo "I file sono XLS o ODS? Digita xls o ods!!!"
read formato
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard& #lancia OOo in background
java -jar /home/fedsette/Download/jodconverter-2.2.1/lib/jodconverter-cli-2.2.1.jar -f csv *.$formato #converte tutti i file in csv
# kill del processo che converte in CSV
var=`ps ax | grep port=8100 | grep -v grep | grep -v etc | awk '{print $1;}'`
kill $var
#
mkdir tmp
mv *.csv ./tmp/
cd tmp
# estraggo le righe che mi interessano
for nomefile2 in *
do
riga_numero=`sed -n '5p;5q' "$nomefile2"` # con sed estraggo la riga
riga_data=`sed -n '9p;9q' "$nomefile2"`
riga_nome=`sed -n '13p;13q' "$nomefile2"`
riga_importo=`sed -n '38p;38q' "$nomefile2"`
#
# estraggo i valori
#
numero_tmp=`expr substr "$riga_numero" 44 10`
data_tmp=`expr substr "$riga_data" 39 10`
nome_tmp=`expr substr "$riga_nome" 16 25`
importo_tmp=`expr substr "$riga_importo" 22 15`
#
# rimuovo virgolette e altro
#
numero=`echo ${numero_tmp%'"'*','}`
data=`echo ${data_tmp%'"'*','}` #rimuove virgolette e virgola dal fondo
nome=`echo ${nome_tmp%'"'*','}`
importo_pre=`echo ${importo_tmp%'"'*''}`
#soluzione due per rimuovere le virgolette
importo=`echo ${importo_pre#''*'"'}`
# esporto i risultati solo per test
echo $numero
echo $data
echo $nome
echo $importo
riga=$numero';'$data';'$nome';'$importo
echo $riga >> prima_nota.csv
done
echo "File CSV generato"
# apro in OOo
soffice prima_nota.csv
#
#
# End!!!!!
i numeri di riga e colonna ovviamente vanno customizzati per le vs esigenze ..... da "# estraggo le righe che mi interessano" in avanti