FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour De Excel a MySql
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
De Excel a MySql
Posted: Wed Jul 19, 2023 12:43 AM

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.

"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 01:25 AM
Esta sería una forma (media manual), no se si con las versiones nuevas de Fivewin existe un metodo de la clase nativa.
Code (fw): Select all Collapse
#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
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 01:30 AM

Gracias César,

Pruebo y te comento

"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 01:01 PM
I am starting with Excel sheet with this data
Code (fw): Select all Collapse
Code    Name
101 cmsoft
102 Jose
103 G.N.Rao
104 Antonio
Use this test program:
Code (fw): Select all Collapse
#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 (fw): Select all Collapse
   INSERT INTO mytable ( `code`, `name` ) 
   VALUES ( 101.00,'cmsoft' ),
   ( 102.00,'Jose' ),
   ( 103.00,'G.N.Rao' ),
   ( 104.00,'Antonio' )
Regards



G. N. Rao.

Hyderabad, India
Posts: 49
Joined: Wed Apr 18, 2007 06:01 PM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 02:17 PM
Great, Mr. Nages.
But how to close the excel file that was left open.

José David Angulo

Auditoria y Sitemas Ltda.

Cartagena Colombia
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 03:49 PM
Code (fw): Select all Collapse
oRange:Parent:Parent:Close( .f. )
oRange:Parent --> oSheet
oRange:Worksheet --> oSheet
oSheet:Parent --> oWorkBook
Regards



G. N. Rao.

Hyderabad, India
Posts: 49
Joined: Wed Apr 18, 2007 06:01 PM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 05:53 PM

Perfecto

Muchas Gracias

José David Angulo

Auditoria y Sitemas Ltda.

Cartagena Colombia
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: De Excel a MySql
Posted: Wed Jul 19, 2023 10:57 PM

Excelente Mr. Rao, mucho mucho merjor!

Gracias por siempre enseñar comandos tan potentes.

Continue the discussion