Page 6 of 6
Import/export Excel files - Esempio ok!
Posted: Thu Aug 24, 2023 5:09 am
by wriedmann
Ciao Gian Ferruccio,
devo vedere perchè il tipo di variabile cambia. Ma mi serve un po di tempo (posso guardare non prima di stasera).
Saluti
Wolfgang
Import/export Excel files - Esempio ok!
Posted: Sat Aug 26, 2023 9:14 am
by Gfb22
Buongiorno.
Ho guardato e fatto alcune prove ma il risultato è lo stesso: oSheet:SetValue(...) con valori numerici in VO registra correttamente i valori in campi numero (su cui possono essere fatti calcoli), mentre con X# i dati nel file di Excel sono numeri ma formattati come campi testo.
Ecco il ciclo che ho usato per scrivere i dati in Excel:
Code: Select all
do WHILE !oFileDBF:EOF
nRow := oFileDBF:Recno + 1
FOR nCol := 1 to nCols
if aStruct[nCol, DBS_TYPE] == "D" // Data
oSheet:SetValue( nRow, nCol, DToC(oFileDBF:FIELDGET( nCol) ) )
else
oSheet:SetValue( nRow, nCol, oFileDBF:FIELDGET( nCol) )
endif
NEXT nCol
oFileDBF:Skip( 1 )
ENDDO
E' poi strano il diverso comportamento, con lo stesso codice e stesse .DLL, tra VO e #X.
Cosa potrei provare per avere i file Excel
corretti?
Grazie per ogni suggerimento...
Gfb
Import/export Excel files - Esempio ok!
Posted: Sat Aug 26, 2023 9:21 am
by wriedmann
Ciao Gian Ferruccio,
mi sono messo questo controllo in programma per oggi pomeriggio - al momento devo finire altre cose.
Penso che il problema sia che l'Interfaccia COM faccia qualche trasformazione del valore da "usual" a un tipo .NET che in questo caso bisogna fare in maniera manuale.
Saluti
Wolfgang
Import/export Excel files - Esempio ok!
Posted: Sat Aug 26, 2023 4:20 pm
by wriedmann
Ciao Gian Ferruccio,
sembra che devi trasformare in numerico in maniera esplicita:
Code: Select all
do case
case aStruct[nField, DBS_TYPE] == "D" // Data
oXlsxSheet:SetValue( nRow, nField, DToC( oServer:FieldGet( nField ) ) )
case aStruct[nField, DBS_TYPE] == "N" // Numeric
oXlsxSheet:SetValue( nRow, nField, ( decimal ) oServer:FieldGet( nField ) )
otherwise
oXlsxSheet:SetValue( nRow, nField, oServer:FieldGet( nField ) )
endcase
Saluti
Wolfgang
Import/export Excel files - Funziona!!
Posted: Sat Aug 26, 2023 5:21 pm
by Gfb22
Fantastico: così funziona e i campi numero vengono scritti correttamente in Excel.
E' stato sufficiente aggiungere, solo per #X (con #ifdef __XSHARP__) la riga
Code: Select all
oXlsxSheet:SetValue( nRow, nField, ( decimal ) oServer:FieldGet( nField ) )
Grazie!!!
Se pensi che possa essere utile ho modificato i tuoi suggerimenti ed esempi creando un modulo generico che consente di trasformare file DBF -> in XLSX e viceversa e posso condividerlo come MEF, anche con una piccola app di esempio, giusto il tempo di creare l'app...
gfb
Import/export Excel files - Funziona!!
Posted: Sun Aug 27, 2023 5:55 am
by wriedmann
Ciao Gian Ferruccio,
Benissimo che funziona addesso come ti serve!
Devo ammettere che la trasformazione tra DBF e Excel non mi è mai servita.
Ho invece una funzione generica (in VO) che trasforma il contenuto di un ListView in una tabella Excel. Questo permette ai miei clienti di esportare il risultato di una ricerca.
Poi mi capita sempre più spesso che i clienti mi chiedono le statistiche non più come stampa, ma come Excel compreso le formule per somme ecc.
Saluti
Wolfgang