Como importar excel (muchas hojas) a datawindows?

Lo que quiero es importar un archivo excel ( muchas hojas) a un datawindows (ya con los campos correspondientes), encontre varias ejemplos pero solo permite pasar una sola hoja (hoja1) trate de modificarlo pero al copiar los datos de excel solo copia una parte, espero que aya alguna manera de poder importar los datos.

2 Respuestas

Respuesta
2

Podrias intentar lo siguiente:

1- Crear una conexion odbc a tu archivo exel

2- Crear un dw con el formato del excel con la siguiente sentencia

SELECT * FROM "Hoja1$"

Esto te traera tonos los datos a la dw; si quieres taer los datos de la siguiente hoja usas

SELECT * FROM "Hoja2$" y asi sucesivamente.

Podrías intentar lo siguiente:

1- Crear una conexión odbc a tu archivo exel

2- Crear un dw con el formato del excel con la siguiente sentencia

SELECT * FROM "Hoja1$"

Esto te traerá todos los datos a la dw; si quieres taer los datos de la siguiente hoja usas

SELECT * FROM "Hoja2$" y asi sucesivamente.

Respuesta
2

Cual es el motivo de pasarlo en varias hojas, si la información puedes filtrarla en excel, porque si lo haces por los encabezados, puedes crear una pantilla en la cual defines los encabezados.

bueno, lo que necesito es que en un archivo excel alli contiene los datos que quiero pasar al datawindows para luego guardarlo en una bd, dicho excel tiene muchas hojas y me gustaria saber si ay alguna forma de pasar los datos completos del excel (todas las hojas, mas bien importarlos) a un datawindows, espero que me haya explicado bien, me gustaria saber su opinion o sugerencia de como poder resolver, saludos. apenas voy aprendiendo este lenguaje. Gracias. espero su respuesta..

Te dejo el link de mi canal que muestra que debes considerar para tu importación de varias hojas https://youtu.be/BKA-JH1Lqk8

¡Gracias! Muchísimas gracias por el apoyo que brinda. Enserio. Es muy bueno, lo probare. Saludos

Disculpe por favor podria explicar la parte de f_importar_excel(dw_1,ls_path)

Al ejecutarlo marca que no conoce la función. Como crear esa función, ¿qué debe de tener? Gracias. Espero su pronta respuesta, Saludos..

La función recibe como parámetros al datawindow y la ruta del archivo. Realizas la conexión a excel y con tu conexión invocas las funciones vba para contar y recorrer las hojas así como seleccionar toda la hoja y copiarlo, además de usar la función importfile

Disculpe trato con este código, pero aun no logro hacer que funcione.

string ls_path, ls_file
integer ll_rc
oleobject loo_excel
GetFileOpenName("Abrir" ,ls_path, ls_file," ","Excel 2007 o posterior (*.xlsx)*.xlsx")

sle_2.text=ls_path
//crear excel
loo_excel = create OLEObject
loo_excel.ConnectToNewobject("excel.application")
loo_excel.visible = false
loo_excel.workbooks.open( ls_path )
loo_excel.ActiveCell.CurrentRegion.Select()
loo_excel.Selection.Copy()
ll_rc = dw_1.importclipboard()

clipboard(' ')
loo_excel.workbooks.close
loo_excel.disconnectobject()
Destroy loo_excel

pero no encuentro la manera de hacer lo de su video (//f_importar_excel(dw_1,ls_path))

¿Si podría poner un ejemplo de como hacerlo?, se lo agradecería mucho.

Crea una funcion: file- New-pb object -function . La funcion no retorna ningun valor.

Le asignas el nombre f_importar_excel y los parámetros que recibe son de tipo datawindow (as_datawindow) y string (as_path)

Oleobject myoleobject
long rc, i,ls_numhoja, Ultimacolumn
myoleobject = CREATE oleobject
rc = myoleobject.ConnectToNewObject ( "Excel.Application" )
IF rc <> 0 THEN
MessageBox ( "Error", 'No está instalado el Excel en la Máquina',stopsign!)
Destroy myoleobject
Return
END IF
try
myoleobject.Application.Visible = true //visualizar al empezar al exportar
myoleobject.workbooks.Open (as_path)
ls_numhoja= myoleobject.Sheets.Count
FOR I=1 TO ls_numhoja
myoleobject.ActiveWorkBook.Sheets(I).Select
myoleobject.cells(1,1).Select
myoleobject.activesheet.cells.copy
as_datawindow.importclipboard(2)
myoleobject.Application.CutCopyMode = False
clipboard(' ')
NEXT
myoleobject.Workbooks.Close
catch ( exception e )
MessageBox ( "Error", e.GetMessage() )
finally
Myoleobject. Disconnectobject()
Destroy myoleobject
end try

Nota : solo invocar función si la ruta es diferente del vacío o null

myoleobject.Application.Visible = true tiene que estar en false para no visualizar el archivo a la hora importar

Myoleobject. Workbooks. Close para cerrar el archivo invocado

Yo mostre el archivo solo por algo didactico

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas