GNU/Linux ….. nel ns dizionario non esite il termine IMPOSSIBILE!!

ebbene si … tra le altre cose oggi sono 35! Cosa? Anniiiiiii

Vabbè … parliamo di cose serie. Non di montagna oggi, quindi di informatica! Proprio ieri l’altro mi è stato posto da un cliente questo interessante problema: “ho circa 170 fatture si può avere una prima nota?”

Traduco: tempo fa gli preparo un modello OOo per le fatture. Ora si vorrebbe raggruppare in un unico file “solo” il numero fattura, la data, il nome e l’importo. Cioè alcuni dati di molti file in un unico file.

Cerco … leggo .. studio .. manuali … internet … ma niente .. non trovo nulla che mi sia d’aiuto.

Poi trovo una utility: JODConverter …. che fa? Più o meno converte tutto in tutto. A questo punto capisco che la mia unica strada è il bash script!

L’idea è questa:

  1. rimuovo gli spazi dai nomi file (cosa che per altro mi ha fatto perdere un po’ di tempo .. causa errori strani!!!)
  2. converto tutti i file xls (o ods è indifferente) in csv con l’utility (necessita di OOo in background)
  3. estrapolo i dati che mi servono da ogni file (quindi ciclo)
  4. assemblo un nuovo csv con i dati estratti …. divisi da ; perchè la virgola potrebbe essere presente neglio importi
  5. apro il file con calc e lo salvo come ods (o xls … )

il risultato è questo scriptino:

[code]

#!/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!!!!![/code]

è andato su al secondo colpo!!!!

Mitico!!!!

Questa voce è stata pubblicata in Pillole di GNU/Linux. Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *