xsharp.eu • Import/export Excel files - Funziona!! - Page 6
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
TestXlsXFile.zip
(7.78 KiB) Downloaded 168 times
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