Tophost

Database - Come esportare i dati da Gestionale Buffetti a Danea Easyfatt

google-plus Scritto da . Postato in Ubuntu

Qualche giorno fa, un cliente che possiede una carpenteria, ha accettato di passare dal suo precedente gestionale, per l'appunto Buffetti al più semplice ed elastico (a mio avviso) Danea Easyfatt.

La cosa interessante di quest'ultimo prodotto è che è maneggevole e si può leggerne il database anche da altri applicativi, grazie al fatto che il database è creato sulla base di Microsoft Access 2003.

Tuttavia, specie se il precedente sistema non è aggiornato, l'esportazione/importazione dati da un gestionale all'altro non è qualcosa di automatico. Spesso il passaggio è doloroso e comporta perdita di dati.

Non si può effettivamente creare una procedura indolore. Spesso e volentieri, ci si trova anche di fronte ad errori di inserimento che rende poi l'importazione assai problematica.

Tuttavia, certi errori li si corregge volentieri a mano a fronte di un'importazione seppur parziale di più di 1000 tra clienti e fornitori.

Nel caso specifico, il gestionale Buffetti dal quale sono stati tratti i dati, non consentiva un'esportazione se non attraverso stampa su file. La stampa, generava un file di testo (estenzione .txt) contenente un elenco di tutti i dati del database.

file txt

La domanda è: Come convertire un semplice file di testo in un file di tipo CSV facilmente importabile in Excel o altri programmi per una successiva manipolazione dei dati?

Osservandone la struttura, dopo l'intestazione, ogni riga rappresentava un cliente (o fornitore). Ogni cliente o fornitore, era suddiviso per campi di larghezza fissa. Questo è il punto di partenza sul quale costruire lo script per estrarre i dati e creare un file di tipo csv partendo dal file originale!

Anche se non è l'approccio migliore, ho deciso di usare il linguaggio PHP e di manipolare il file attraverso uno script lanciato da webserver Apache in locale. Il metodo, è semplice e molto rapido.

Per prima cosa, per evitare di complicarmi eccessivamente la vita, con un semplice Sostituisci da un qualsiasi editor di testo (io ho usato Gedit) ho eliminato tutte le intestazioni. Una volta modificato il file di testo, esso contiene riga per riga i soli dati dei fornitori.

La prima riga di codice nello script, sarà quindi dedicata a stampare a video l'intestazione del nuovo file:

echo '"Ragione Sociale","Nome","Codice","Partita IVA","Indirizzo","Localita","CAP","Pv","PF"<br/>';

In seguito, essendo ogni campo di larghezza fissa, una volta prelevata una riga di testo dal file esportato, posso dire con precisione quanti caratteri estrarre per ottenere le informazioni relative al singolo campo per singolo cliente.

Dopo aver aperto il file:

$fp = fopen('fornitori.txt','r') or die ("can't open file");

Faccio così ciclicamente per ogni riga, suddividendola per campo e assegnando ognuno di essi alle celle di un array.

while ($s = fgets($fp,1024)) {
    $fields[1] = substr($s,0,35);  
    $fields[2] = substr($s,36,22);
    $fields[3] = substr($s,58,4);
    $fields[4] = substr($s,62,12);
    $fields[5] = substr($s,74,21);
    $fields[6] = substr($s,95,26);
    $fields[7] = substr($s,121,6);
    $fields[8] = substr($s,127,3);
    $fields[9] = substr($s,130,1);
    csv_line($fields);
}

La funzione csv_line(array) che richiamo alla fine del ciclo, non fa altro che stampare l'array passatogli generando così la riga rappresentante il fornitore, rispettando il classico formato dei file CSV:

function csv_line($line){
    $csv_line = '"';
    foreach($line as $field)
    {
        $csv_line .= str_replace('_', ' ', $field).'","';
    }
    $csv_line .='"<br/>';
    echo $csv_line;  
}

Una volta lanciato ed eseguito lo script dal Browser (es.: http://localhost/txt2csv.php ), per creare il nuovo file di testo, basterà sempre da Browser salvare l'output creato:

File > Salva con nome > "fornitori.csv"

Fatto!!! laughing

Lo script ovviamente può essere migliorato per passare via query string il nome del file da processare. Può anche essere un'idea creare una form dove selezionare il file attraverso una finestra di dialogo... A voi la scelta!

Comunque sia, già così fa il suo dovere... Ora il file txt convertito in formato CSV è pronto per essere utilizzato o importato in Excel o qualsivoglia programma per poterne manipolare i dati!

 

Se hai gradito l'articolo, condividilo, basta un click!

Aggiungi commento


Codice di sicurezza
Aggiorna

  • logo prontopro
  • logo boutique serramento
  • koilab japan and tropical fish farm
  • Trasloco economico - gruppo Arco Traslochi
  • logo flash pulizie
  • logo revolution
  • logo planetkoi small
  • logo finiture
  • ick logo template
  • montaggio mobili trento

Realizzato da: Daniele Gagliardi
Viale Monache 3 - 38062 Arco - TN
- Contattami -

Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati.