Importare un file excel in un cursore VFP

510 views
Skip to first unread message

Serpico

unread,
May 2, 2017, 4:59:52 PM5/2/17
to Foxpro Italia
Salve a tutti,
ho un file excel che deve essere trasformato in un cursore VFP per poi essere "modellato" ma credo mi sfugga qualcosa perchè in fase di APPEND mi crasha VFP.

Posto il codice:

file = GETFILE('xls','Fatture :','OK',0,'Seleziona il file delle fatture:')

CREATE CURSOR filefat (nddt I,datad D, nprot I, dataf D, cliente c(60),ragsoc c(100), dd C(10), codicearti c(80),;
um c(5),quantita n(10,2), prezzo n(10,2), importo n(10,2), iva c(6), aliquo c(6))

SELECT filefat 
ZAP IN 'filefat'

SELECT filefat
APPEND FROM (file) TYPE XLS

SELECT filefat
BROWSE  


Dimentico qualcosa? In teoria pensavo che bastasse fare un 

IMPORT FROM (file) TYPE XLS 
per crearmi un cursore di un file excel ma ho visto che non funzia.

Stefano Gambassi

unread,
May 2, 2017, 8:18:16 PM5/2/17
to Foxpro Italia
Ciao Serpico,

ti incollo un estratto di codice che uso in un'applicazione recente. Vedi se ti può aiutare.

&& Se non installato scaricare e installare Data Provider
&& --------------------------------------------------------------------

lcConnstr = [DBQ=] + File_Excel + [;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=excel 12.0;MaxBufferSize=2048;MaxScanRows=8;]

lnSQLHand = SQLSTRINGCONNECT( lcConnstr )

lcSQLCmd = [Select * FROM "Foglio1$"] &&& replace with sheet name
lnSuccess = SQLEXEC( lnSQLHand, lcSQLCmd, "Cursore_da_creare" )

IF lnSuccess < 0
LOCAL ARRAY laErr[1]
AERROR( laErr )
=MESSAGEBOX("Si è erificato un errore: " + laErr(3), MB_ICONSTOP + MB_OK, MSG_WARNING)
SQLDISCONNECT( lnSQLHand )
RETURN .F.
ENDIF


Fabio Di Buò

unread,
May 3, 2017, 3:36:23 AM5/3/17
to Foxpro Italia
Ciao Stefano,
poi ieri ho trovato questo accorgimento in giro e sembra fungere. Praticamente salva il file nel formato 5.0/95 di excel che facilita l'import.

Non saprei dire quale sia la scelta giusta e ottimale però sembra andare.

#DEFINE xlExcel5 39

oExcel = CreateObject("Excel.Application")
oExcel.DisplayAlerts = .F.
IF vartype(oExcel) != "O"
  return .F.
ELSE 
  oWorkbook = oExcel.Application.Workbooks.Open(file_import)
  oWorkbook.SaveAs(file_import,39)
  oWorkbook.Close(.T.)
  oExcel.quit()
ENDIF




--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a foxpro-italia+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a foxpro...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/foxpro-italia/7b390801-a7cb-4c49-b843-c34cc562afaa%40googlegroups.com.

Per altre opzioni visita https://groups.google.com/d/optout.

vecchio pippo

unread,
May 3, 2017, 3:49:24 AM5/3/17
to foxpro...@googlegroups.com
Immagino che il file sia fornito da un cliente, non fatto da te. A me è
capitato ed ho risolto semplicente risalvando con un nome diverso. Non
so dirti perchè, ma funziona. Prova "IMPORT" da finestra comandi, se
dopo aver selezionato il file non ti elenca i fogli presenti il file non
va bene. Io comunque quando faccio queste operazioni ci metto sempre un
TRY CATCH.

pippo
> --
> Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro
> Italia" di Google Gruppi.
> Per annullare l'iscrizione a questo gruppo e non ricevere più le sue
> email, invia un'email a foxpro-itali...@googlegroups.com
> <mailto:foxpro-itali...@googlegroups.com>.
> Per postare in questo gruppo, invia un'email a
> foxpro...@googlegroups.com <mailto:foxpro...@googlegroups.com>.
> <https://groups.google.com/d/msgid/foxpro-italia/7b390801-a7cb-4c49-b843-c34cc562afaa%40googlegroups.com?utm_medium=email&utm_source=footer>.
> Per altre opzioni visita https://groups.google.com/d/optout.

--


-----------------------------------------------

Rispetta l’ambiente. Hai davvero bisogno di stampare questa mail?

Comunichiamo in sicurezza, vai su www.gpg4win.org
Scarica la mia chiave da keyserver.pgp.com


Fabio Di Buò

unread,
May 3, 2017, 7:35:57 AM5/3/17
to Foxpro Italia
Si, sembra funzioni bene risalvando il file.

Un'ultima cosa, è possibile cambiare il formato cella di una colonna attraverso l'automazione del file excel?
Ho una colonna data non formattata bene e dovrei farla diventare dd/mm/yyyy ed ho provato:


oWorkbook.columns("D").NumberFormat = "dd/mm/yyyy"

ma non funziona.





> Per postare in questo gruppo, invia un'email a

> Per visualizzare questa discussione sul Web, visita
> https://groups.google.com/d/msgid/foxpro-italia/7b390801-a7cb-4c49-b843-c34cc562afaa%40googlegroups.com
> <https://groups.google.com/d/msgid/foxpro-italia/7b390801-a7cb-4c49-b843-c34cc562afaa%40googlegroups.com?utm_medium=email&utm_source=footer>.
> Per altre opzioni visita https://groups.google.com/d/optout.

--


-----------------------------------------------

Rispetta l’ambiente. Hai davvero bisogno di stampare questa mail?

Comunichiamo in sicurezza, vai su www.gpg4win.org
Scarica la mia chiave da keyserver.pgp.com
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a foxpro-italia+unsubscribe@googlegroups.com.
Per postare messaggi in questo gruppo, invia un'email a foxpro...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/foxpro-italia/078b8a51-3e54-8355-4ef0-6bab4077ca95%40tiscali.it.
Per ulteriori opzioni, visita https://groups.google.com/d/optout.

Fabio Di Buò

unread,
May 3, 2017, 8:08:53 AM5/3/17
to Foxpro Italia
Risolto:

oExcel.columns("B:B").select
oExcel.selection.NumberFormat = "dd/mm/yyyy"

Fabio Di Buò

unread,
May 3, 2017, 8:08:53 AM5/3/17
to Foxpro Italia
Risolto:

oExcel.columns("B:B").select
oExcel.selection.NumberFormat = "dd/mm/yyyy"
Il giorno 3 maggio 2017 13:35, Fabio Di Buò <fabio...@gmail.com> ha scritto:
Reply all
Reply to author
Forward
0 new messages