Autore Topic: [RISOLTO] recuperare dati da un foglio excel  (Letto 5554 volte)

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
[RISOLTO] recuperare dati da un foglio excel
« il: 24 Maggio 2010, 15:34:00 »
riciao a tutti. Ho questo problema: sto scrivendo un programma di contabilità del mio bar. Il registratore di cassa (pc touch screen) alla sera mi esporta i dati in formato excel (poi posso salvarli in qualsiasi formato supportato da excel) in che formato posso salvarli e poi come posso leggerlo con gambas per importare i dati all'interno di una tabella in un database sqlite?
« Ultima modifica: 25 Maggio 2010, 23:01:34 da doublemm »
Matteo DoubleMM Mion

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.252
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #1 il: 24 Maggio 2010, 16:26:01 »
secondo me ti conviene esportarli in formato csv...
e dopo lo elabori con la funzione Split

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #2 il: 24 Maggio 2010, 17:27:09 »
ora mi documento sulla funzione split ne vedo se fa al caso mio
Matteo DoubleMM Mion

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #3 il: 24 Maggio 2010, 17:35:49 »
ok potrebbe essere la via giusta mettere il file csv in un array tramite la funzione split e poi lavorarla per creare la mia tabella. Ignoro però come caricare il file.csv per poi splittarlo
Matteo DoubleMM Mion

Offline ealmuno

  • Maestro Gambero
  • ****
  • Post: 388
    • Mostra profilo
    • http://www.ealmuno.com
Re: recuperare dati da un foglio excel
« Risposta #4 il: 24 Maggio 2010, 18:48:18 »
credo devi farlo manualmente, apri il file excel e da li lo salvi con file-->salva con nome-->nomefile.csv
poi lo prendi con gambas. Per fare tutto con gambas non saprei, forse puoi farlo usando qualche comando da terminale.
Ma stiamo parlando di Excel (quello di microsoft) oppure di calc di openoffice?
il mio nuovo sito : ealmuno.com

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #5 il: 24 Maggio 2010, 19:58:14 »
ok potrebbe essere la via giusta mettere il file csv in un array tramite la funzione split e poi lavorarla per creare la mia tabella. Ignoro però come caricare il file.csv per poi splittarlo

ok come avevo detto da excel salvo un csv e poi come lo carico in gambas per splittarlo?
Matteo DoubleMM Mion

Offline ealmuno

  • Maestro Gambero
  • ****
  • Post: 388
    • Mostra profilo
    • http://www.ealmuno.com
Re: recuperare dati da un foglio excel
« Risposta #6 il: 24 Maggio 2010, 20:11:29 »
a mio parere puoi caricare ogni riga del file in una stringa e poi usare la funzione split. Oppure caricare tutto il file in un'unica stringa. Ma di sicuro sapranno consigliarti di meglio gli altri ;D.
Qua puoi vedere come gestire i file : http://gambasdoc.org/help/comp/gb/file
il mio nuovo sito : ealmuno.com

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.252
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #7 il: 24 Maggio 2010, 20:58:07 »
In linea di massima si fa cosi'

Codice: [Seleziona]
PRIVATE SUB Recuperocsv()
DIM f AS String
DIM rec AS String[]
DIM s AS String[]

  f = File.Load("path_tuo_file.csv")

  rec = Split(f, "/n", "", TRUE) 'Split dell'intero file dove trova un ritorno a capo
  FOR EACH f IN rec
    s = Split(f, ";")
    ' In questa parte di codice fai in modo di inserire i dati nella tua GridView
  NEXT

END

L'unica cosa e' che devi fare attenzione a non inserire nel file csv, tipo delle descrizioni con il ritorno a capo, altrimenti la variabile rec ti viene sfalsata.


Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #8 il: 24 Maggio 2010, 22:16:38 »
ho provato a fare questo

Codice: [Seleziona]
PUBLIC SUB Form_Open()

DIM f AS String
DIM rec AS String[]
DIM s AS String[]
DIM i AS Integer = 0
DIM j AS Integer = 0

  f = File.Load("/home/matteo/Scrivania/Gestionale/CAMIGest/Archivio Cassa/2genn.csv")
 
  rec = Split(f, "/n", "", TRUE) 'Split dell'intero file dove trova un ritorno a capo
 
  GridView1.mode = Select.Multiple
  GridView1.Columns.Count = 4
  GridView1.Rows.Count = rec.Count
 
  FOR EACH f IN rec
    s = Split(f, ";")
    TextArea1.Text = s[j]
    GridView1[i, 0].Text = s[j]
    INC j
    GridView1[i, 1].Text = s[j]
    INC j
    GridView1[i, 2].Text = s[j]
    INC j
    GridView1[i, 3].Text = s[j]
    INC j
    INC i
   
    ' In questa parte di codice fai in modo di inserire i dati nella tua GridView
  NEXT


END

ma mi da out of bounds alla riga

Codice: [Seleziona]
GridView1[i, 1].Text = s[j]
Matteo DoubleMM Mion

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #9 il: 24 Maggio 2010, 23:04:48 »
Per importare ed esportare file csv in gambas MD9327 ha fatto una classe che trovi nell'area download, si chiama
Citazione
Pgcsv Class

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.252
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #10 il: 24 Maggio 2010, 23:20:38 »
PUBLIC SUB Form_Open()

DIM f AS String
DIM rec AS String[]
DIM s AS String[]
DIM i AS Integer = 0
DIM j AS Integer = 0

  f = File.Load("/home/matteo/Scrivania/Gestionale/CAMIGest/Archivio Cassa/2genn.csv")
 
  rec = Split(f, "/n", "", TRUE) 'Split dell'intero file dove trova un ritorno a capo
 
  GridView1.mode = Select.Multiple
  GridView1.Columns.Count = 4
  GridView1.Rows.Count = rec.Count
 
  FOR EACH f IN rec
    s = Split(f, ";")
    TextArea1.Text = s[j]
    GridView1[i, 0].Text = s[j]
    INC j
    GridView1[i, 1].Text = s[j]
    INC j
    GridView1[i, 2].Text = s[j]
    INC j
    GridView1[i, 3].Text = s[j]
    j=0
    INC i
   
    ' In questa parte di codice fai in modo di inserire i dati nella tua GridView
  NEXT


END

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #11 il: 25 Maggio 2010, 00:40:00 »
sono riuscito ad inserire l'arrey nella grid solo che ho un problema. Quando salvo in csv mi chiede che separatore voglio usare e mi fa scegliere tra ' e ". se uso l'apice mi divide delle celle dovec'è scritto CAFFE' CORRETTO oppure CAFFE' MACCHIATO (per via dell'accento esportato come apice. Se uso " non so come inserirlo nell'istruzione SPLIT.

rec=split(string,?)

« Ultima modifica: 25 Maggio 2010, 07:48:30 da doublemm »
Matteo DoubleMM Mion

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: recuperare dati da un foglio excel
« Risposta #12 il: 25 Maggio 2010, 09:20:46 »
I doppi apici sono CHR$(34).
Cmq in rete ho trovato xlhtml, un programmino che non converte solo da XCL aHTML ma anche in CVS.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: recuperare dati da un foglio excel
« Risposta #13 il: 25 Maggio 2010, 11:39:10 »
I doppi apici sono CHR$(34).
Cmq in rete ho trovato xlhtml, un programmino che non converte solo da XCL aHTML ma anche in CVS.

per la conversine non è un problema. Alla sera quando chiudo cassa si apre excel con il file da salvare e lo salvo in CVS. Ogni file generato devo accodarlo ad una tabella in un database sqlite per usarlo come statistica. Il file che devo accodare contiene informazioni tipo:

id       descrizione     qt       prezzo
200    CAFFE'             254    0.90

il problema è che delle volte sulla descrizione ho CAFFE' CORRETTO quindi se uso l'apice come separatore mi divide CAFFE da CORRETTO e mi sballa tutta la grid. potrei fare delle if per ogni descrizione che ha l'apice ma se uso le virgolette credo sia meglio.

dimmi se è corretto split(stringa, CHR$(34))

grazie mille, senza di voi non sarebbe possibile andare avanti.
Matteo DoubleMM Mion

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: recuperare dati da un foglio excel
« Risposta #14 il: 25 Maggio 2010, 16:42:11 »
I doppi apici sono CHR$(34).
Cmq in rete ho trovato xlhtml, un programmino che non converte solo da XCL aHTML ma anche in CVS.

per la conversine non è un problema. Alla sera quando chiudo cassa si apre excel con il file da salvare e lo salvo in CVS. Ogni file generato devo accodarlo ad una tabella in un database sqlite per usarlo come statistica. Il file che devo accodare contiene informazioni tipo:

id       descrizione     qt       prezzo
200    CAFFE'             254    0.90

il problema è che delle volte sulla descrizione ho CAFFE' CORRETTO quindi se uso l'apice come separatore mi divide CAFFE da CORRETTO e mi sballa tutta la grid. potrei fare delle if per ogni descrizione che ha l'apice ma se uso le virgolette credo sia meglio.

dimmi se è corretto split(stringa, CHR$(34))

grazie mille, senza di voi non sarebbe possibile andare avanti.

Innanzitutto 90 cent un caffè è un furto... :P

tornando a noi: gli apici possono essere inseriti grazie al carattere speciale di escape \...lo slash, infatti, serve a dire a gambas (ed ad altri linguaggi anche) che ciò che lo segue deve essere visto come quel carattere speciale....quindi le virgolette sono \"

Perciò la tua funzione sarà:

variabile_stringa = Split(Stringa_da_splittare, "\"")