Page 1 of 1

De Excel a MySql

Posted: Wed Jul 19, 2023 12:43 am
by JoseAlvarez
Hola a todos nuevamente.

Pues eso, tengo una hoja excel con solo 2 columnas, codigo y nombre y necesito pasarlos a una tabla en mysql.

Algun ejemplo.??

Quedo atento.

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 1:25 am
by cmsoft
Esta sería una forma (media manual), no se si con las versiones nuevas de Fivewin existe un metodo de la clase nativa.

Code: Select all | Expand

#include "Fivewin.ch"
#include "xbrowse.ch"
#include "tdolphin.ch"
PROCEDURE ImportaExcel(cFile)
LOCAL oExcel, oBook, cSql1, q, nTotRow, cCol1, cCol2
oExcel:=TOleAuto():New("Excel.Application")
oBook := oExcel:Workbooks:Open(cFile)
cSql1 := "INSERT INTO productos (codigo,nombre) VALUES "

    oBook:Sheets(1):Select()
    oHoja := oExcel:ActiveSheet()
    nTotRow:= oHoja:UsedRange:Rows:Count()
    FOR q=2 TO nTotRow
      cCol1:=oHoja:Cells( q, 1 ):Value
      cCol2:=oHoja:Cells( q, 2 ):Value
      cSql1 := cSql1 + "("+cCol1 + "," +  cCol2 +")  ,"
    NEXT    
NEXT 
oExcel:WorkBooks:Close()
oExcel:Application:Quit()
oExcel:Quit()
RELEASE oHoja
RELEASE oExcel

cSql1 := LEFT(cSql1,LEN(cSql1)-1)
oServer:Execute( cSql1 )
MsgInfo("Proceso terminado","Atencion!")
Return
Espero te sirva
Tambien otra opcion es usar xbrowse para copiar desde Excel y pegar en Xbrowse (en un array) y luego grabar en la base la tabla resultante

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 1:30 am
by JoseAlvarez
Gracias César,

Pruebo y te comento

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 1:01 pm
by nageswaragunupudi
I am starting with Excel sheet with this data

Code: Select all | Expand

Code    Name
101 cmsoft
102 Jose
103 G.N.Rao
104 Antonio
 
Use this test program:

Code: Select all | Expand

#include "fivewin.ch"
#include "adodef.ch"

function Main()

   local cXlBook := "c:\fwh1906\samples\data.xlsx"
   local oCn, oRange, aData, cSql

   oRange := GetExcelRange( cXlBook )
   aData  := xlRangeValue( oRange )
   ADel( aData, 1, .t. )
   cSql  := SQL INSERT INTO mytable ( `code`, `name` ) ARRAY aData
   ? cSql
   // open dolphin or other connection
   //oCn:Execute( cSql )

return nil
This the value of cSql generated:

Code: Select all | Expand

   INSERT INTO mytable ( `code`, `name` ) 
   VALUES ( 101.00,'cmsoft' ),
   ( 102.00,'Jose' ),
   ( 103.00,'G.N.Rao' ),
   ( 104.00,'Antonio' )   
 

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 2:17 pm
by audisys
Great, Mr. Nages.
But how to close the excel file that was left open.

Image

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 3:49 pm
by nageswaragunupudi

Code: Select all | Expand

oRange:Parent:Parent:Close( .f. )
oRange:Parent --> oSheet
oRange:Worksheet --> oSheet
oSheet:Parent --> oWorkBook

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 5:53 pm
by audisys
Perfecto

Muchas Gracias

Re: De Excel a MySql

Posted: Wed Jul 19, 2023 10:57 pm
by cmsoft
Excelente Mr. Rao, mucho mucho merjor!
Gracias por siempre enseñar comandos tan potentes.