Precedente :: Successivo |
Autore |
Messaggio |
Fed7
Registrato: 03/01/08 11:08 Messaggi: 537 Residenza: Quargnento, (AL)
|
Inviato: Gio Lug 03, 2008 7:06 pm Oggetto: ad uso e consumo ..... |
|
|
... dei geek ... dei prof. ICT ... dei semplici smanettoni ....
sul mio blog .. ben poco aggiornato .. l'ho intitolato " .. sul ns dizionario non esiste la parola impossibile"
Problema: un cliente, a cui hai preparato (sei mesi fa) un modello OOo (calc) per le fatture, ti chiede: "ma sarebbe possibile avere una prima nota?"
Con aria sboronica dici: "ma certo ... quante fatture hai fatto?"
Cliente: "... 170 circa"
Ieri sera tra le 19 e le 21 cerco .. leggo .. spulcio .. niente!!
Sembra che con OOo non ci sia modo ... di estrapolare alcuni dati da enne file e portarli in uno solo ... in modo automatico!!
A quanto sembra nemmeno in Excel
Gira che ti rigira finisco per incappare in questa utility: JODConverter!
È in java ... e in pratica converte tutto in tutto.
Capisco che la mia unica strada è il bash script
Quindi per tutti quelli che usano GNU/Linux ecco:
Codice: |
#!/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!!!!! |
ovviamente i riferimenti di riga e colonna vanno customizzati ... _________________ �Quello che conta non � tanto arrampicare in fretta, ma per tanto tempo� (Georges Livanos) |
|
Top |
|
 |
Domonice Site Admin
Registrato: 08/02/07 23:39 Messaggi: 10747 Residenza: Franciacorta
|
Inviato: Gio Lug 03, 2008 8:24 pm Oggetto: |
|
|
beh, come hai fatto a non pensarci subito?  _________________ www.on-ice.it
- i limiti sono nella tua testa - |
|
Top |
|
 |
giò
Registrato: 12/02/07 15:11 Messaggi: 3305 Residenza: Valtellina
|
Inviato: Gio Lug 03, 2008 10:57 pm Oggetto: |
|
|
appperò!
 |
|
Top |
|
 |
Fed7
Registrato: 03/01/08 11:08 Messaggi: 537 Residenza: Quargnento, (AL)
|
Inviato: Ven Lug 04, 2008 7:52 am Oggetto: |
|
|
Domonice ha scritto: | beh, come hai fatto a non pensarci subito?  |
beh, semplice .... se hai sempre montagne e vie per la testa come fai a concentrarti .. sono veramente pochi i momenti di lucidità
e poi .. son sempre un rarissimo esempio di Geek-Alpinista  _________________ �Quello che conta non � tanto arrampicare in fretta, ma per tanto tempo� (Georges Livanos) |
|
Top |
|
 |
ravanator
Registrato: 02/07/08 08:46 Messaggi: 25
|
Inviato: Ven Lug 04, 2008 8:12 am Oggetto: |
|
|
Fed7 ha scritto: | Domonice ha scritto: | beh, come hai fatto a non pensarci subito?  |
beh, semplice .... se hai sempre montagne e vie per la testa come fai a concentrarti .. sono veramente pochi i momenti di lucidità
e poi .. son sempre un rarissimo esempio di Geek-Alpinista  |
devo riscrivertelo in perl....? ) |
|
Top |
|
 |
gash
Registrato: 14/02/07 14:12 Messaggi: 202
|
Inviato: Ven Lug 04, 2008 8:48 am Oggetto: |
|
|
Gli si potrebbe dare una GUI con zenity o con buc _________________ Se ghe' de fal... fomel |
|
Top |
|
 |
ravanator
Registrato: 02/07/08 08:46 Messaggi: 25
|
Inviato: Ven Lug 04, 2008 8:54 am Oggetto: |
|
|
gash ha scritto: | Gli si potrebbe dare una GUI con zenity o con buc |
ficus buc, non lo conoscevo...se non fosse che ho tutte macchine in init 3 ... |
|
Top |
|
 |
gash
Registrato: 14/02/07 14:12 Messaggi: 202
|
Inviato: Ven Lug 04, 2008 8:55 am Oggetto: |
|
|
E' sviluppato interamente da italiani  _________________ Se ghe' de fal... fomel |
|
Top |
|
 |
ravanator
Registrato: 02/07/08 08:46 Messaggi: 25
|
Inviato: Ven Lug 04, 2008 8:59 am Oggetto: |
|
|
gash ha scritto: | E' sviluppato interamente da italiani  |
ho visto...
appena ho in secondo lo provo... |
|
Top |
|
 |
Fed7
Registrato: 03/01/08 11:08 Messaggi: 537 Residenza: Quargnento, (AL)
|
Inviato: Ven Lug 04, 2008 9:18 am Oggetto: |
|
|
ravanator ha scritto: | gash ha scritto: | E' sviluppato interamente da italiani  |
ho visto...
appena ho in secondo lo provo... |
io lo sto provando ... negli ultimi mesi ho trascurato un po' i forum *nix a favore di quelli di montagna .. e così mi era sfuggito  _________________ �Quello che conta non � tanto arrampicare in fretta, ma per tanto tempo� (Georges Livanos) |
|
Top |
|
 |
LorenzOrobico
Registrato: 08/02/07 23:23 Messaggi: 9209 Residenza: Trescùr (BG)
|
Inviato: Ven Lug 04, 2008 9:55 am Oggetto: |
|
|
Interessante JOD !
Potresti crearti anche una classe Java che fa tutto il lavoro utilizzando le API di JOD.
Ci spendi un po' di tempo, ma un domani e` un pochino piu` riutilizzabile.
Ma perche` devi killare il processo di conversione ?  _________________ Ascolta e dimentica, vedi e ricorda, fai e capisci.
Visita il mio blog |
|
Top |
|
 |
Fed7
Registrato: 03/01/08 11:08 Messaggi: 537 Residenza: Quargnento, (AL)
|
Inviato: Ven Lug 04, 2008 10:17 am Oggetto: |
|
|
LorenzOrobico ha scritto: |
Ma perche` devi killare il processo di conversione ?  |
xchè mi tiene impegnato un tty e non permette il proseguo ....
certo .. potrei esportarlo in un'altra tty ... ma di prima mi è venuto bene killarlo  _________________ �Quello che conta non � tanto arrampicare in fretta, ma per tanto tempo� (Georges Livanos) |
|
Top |
|
 |
Fed7
Registrato: 03/01/08 11:08 Messaggi: 537 Residenza: Quargnento, (AL)
|
Inviato: Ven Lug 04, 2008 10:21 am Oggetto: |
|
|
gash ha scritto: | Gli si potrebbe dare una GUI con zenity o con buc |
bello BUC ... intuitivo ... un pelo limitato .. ho subito trovato qualche bug ... mangia un po' di ram (il mio script ne consuma praticamente zero!!) ... però non ho resistito .. ed al primo colpo .. ecco:
ecco il codice mc:
Codice: |
<?xml version="1.0"?>
<config>
<tab>
<title>echo "Genera Prima Nota 1.0"</title>
</tab>
<label>
echo "Seleziona il percorso"
</label>
<file var="percorso" mode="dir" filter="">
</file>
<label>
echo "Seleziona il tipo di file"
</label>
<combobox var="formato">
echo "xls"
echo "ods"
</combobox>
<label>
echo "Clicca su AVVIA per effettuare la conversione"
</label>
<button title="AVVIA">
direct=echo $PWD
sh primanota.sh $percorso $formato
</button>
</config> |
il codice di primanota.sh:
Codice: |
#!/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 1.0 with BUC
# del 4/7/2008
#
# Enjoy!!!!!!!!!
cd $1
for nomefile in *
do
mv "$nomefile" $(echo "$nomefile" | tr " " "_")
done
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard&
java -jar /home/fedsette/Download/jodconverter-2.2.1/lib/jodconverter-cli-2.2.1.jar -f csv *.$2
processo=`ps ax | grep port=8100 | grep -v grep | grep -v etc | awk '{print $1;}'`
kill $processo
mkdir tmp
mv *.csv ./tmp/
cd tmp
for nomefile2 in *
do
riga_numero=`sed -n '5p;5q' "$nomefile2"`
riga_data=`sed -n '9p;9q' "$nomefile2"`
riga_nome=`sed -n '13p;13q' "$nomefile2"`
riga_importo=`sed -n '38p;38q' "$nomefile2"`
numero_tmp=`expr substr "$riga_numero" 44 10`
data_tmp=`expr substr "$riga_data" 39 10`
nome_tmp=`expr substr "$riga_nome" 16 25`
nome_tmp=`expr substr "$riga_nome" 16 25`
importo_tmp=`expr substr "$riga_importo" 22 15`
numero=`echo ${numero_tmp%'"'*','}`
data=`echo ${data_tmp%'"'*','}`
nome=`echo ${nome_tmp%'"'*','}`
importo_pre=`echo ${importo_tmp%'"'*''}`
importo=`echo ${importo_pre#''*'"'}`
riga=$numero';'$data';'$nome';'$importo
echo $riga >> prima_nota.csv
done
soffice prima_nota.csv
|
come detto ... piuttosto banale ... purtroppo ... oltre un certo numero di linee .. va in palla .. così ho ovviato appoggiandomi ad un bash ext a cui ho dato in pasto le variabili di buc  _________________ �Quello che conta non � tanto arrampicare in fretta, ma per tanto tempo� (Georges Livanos)
L'ultima modifica di Fed7 il Mar Lug 08, 2008 11:26 am, modificato 1 volta |
|
Top |
|
 |
gash
Registrato: 14/02/07 14:12 Messaggi: 202
|
Inviato: Ven Lug 04, 2008 10:41 am Oggetto: |
|
|
C'è una doppia riga credo inutile o sbaglio
Codice: | nome_tmp=`expr substr "$riga_nome" 16 25`
nome_tmp=`expr substr "$riga_nome" 16 25` |
_________________ Se ghe' de fal... fomel |
|
Top |
|
 |
Fed7
Registrato: 03/01/08 11:08 Messaggi: 537 Residenza: Quargnento, (AL)
|
Inviato: Ven Lug 04, 2008 7:12 pm Oggetto: |
|
|
gash ha scritto: | C'è una doppia riga credo inutile o sbaglio
Codice: | nome_tmp=`expr substr "$riga_nome" 16 25`
nome_tmp=`expr substr "$riga_nome" 16 25` |
|
nel postare sul forum ho sbagliato .. ma nell'originale non c'è
grazie cmq ... sei un ottimo bug-hunter  _________________ �Quello che conta non � tanto arrampicare in fretta, ma per tanto tempo� (Georges Livanos) |
|
Top |
|
 |
|