Problema conexion excel

Disculpa que te moleste de nuevo lo que pasa es que estoy intento mostrar un archivo .xls en un datagrid y para esto necesito conectarme primero con excel por lo que utilizo lo siguiente :
conexion.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Libro & "; Extended Properties=Excel 8.0"";HDR=Yes;") ' se realiza la conexion especificando la ruta (Libro)del archivo
El problema es que me marca una COMException la cual dice que no encuentra el proveedor especificado y que cheq que est bien instalado por lo que ya no hace nada mi aplicación.
Sabes como solucionarlo. Ya intente cambiarle según a varios ejemplos de los proveedores pero aun así sigue el mismo error. La verdad no se como saber cual es el proveedor o como solucionarlo.
Por favor si puedes ayudarme te lo agradecería

1 respuesta

Respuesta
1
¿El PC donde sucede eso tiene un procesador de 64 bits?
No, es de 32 bits, ¿con S.O Vista
por que?
En 64 bits este proveedor OLEDB no funciona.
Instala el MDAC en el PC a ver si eso soluciona tu problema, lo consigues en la página de MS.
Ya lo instale pero me sigue marcando el mismo error.
No se la verdad cual es el proveedor que deba poner para que ya no marque error
Yo solucione eso con esto:
Microsoft Excel ODBC Driver
Type: ODBC Driver
Usage:  Driver={Microsoft Excel Driver (*.xls)}
Manufacturer:  Microsoft
Customize string example values »
Standard
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;
SQL syntax "SELECT * FROM [sheet1$]". I.e. excel worksheet name followed by a "$" and wrapped in "[" "]" brackets.
Si necesitas más detalles: www.connectionstrings.com
Hola de nuevo. Primero quiero agradecerte por el seguimiento que le has dado a mis dudas.
Viendo la solución que aplicast se ve interesante ya que es distinta a la que presentan por lo gral. pero me la podrías explicar por favor y en que lenguaje la tienes.
¿Ademas qué office ocupas?
Muchas gracias por todo
Lo que te muestro es la cedena de conexión que utilizo para acceder al archivo de excel que puede ser Office 2003
La solución la tengo en VB6, VB.NET y C#
¿Mira yo tengo ya este código que no me marca error pero no me muestra nada en el datagrid me podrías decir si ves algún problema?
Dim conexion As ADODB.Connection, rs As ADODB.Recordset ' variables para la conexion a excel, rs es para el recorrido
conexion = New ADODB.Connection
conexion.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Libro & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'") ' se realiza la conexion especificando la ruta (Libro)del archivo
 If Not System.IO.File.Exists(ruta.Text) Then ' compprueba de q exista el archivo
MsgBox("No se encontr el Libro", MsgBoxStyle.Critical, "Ruta invlida")
Exit Sub
End If
If rango <> ":" Then
hoja = hoja & "$" & rango
End If
 rs = New ADODB.Recordset
 rs.Open("SELECT * FROM [" & hoja & "]", conexion, , , )
 Mostramos los datos en el datagrid
DataGrid1.DataSource = rs
Y gracias por tu ayuda
Si no te muetsra nada es porque el rs no tiene valores
Si tal vez tienes razón aunque ahorita buscando ya encontré otra solución y esta si me muestra los datos
Dim conAuthors As OleDbConnection ' variable de conexion
 Dim cmdSelectAuthors As OleDbCommand ' variable para devolver los datos de la hoja de calculo
 Dim dtrAdapter As New OleDbDataAdapter 'variable para crear un nuevo dataset
 Dim obData As New DataSet() ' variable de dataset para contener la informacion de la hoja de calculo
conAuthors = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Libro & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'") ' se realiza la conexion especificando la ruta (Libro)del archivo
 conAuthors.Open() ' abrir la conexion
 cmdSelectAuthors = New OleDbCommand("Select * From [" & hoja & "$]", conAuthors) ' comando SELECT para obtener los datos de la hoja
 dtrAdapter.SelectCommand = cmdSelectAuthors ' pasar el comando select al adaptador
 dtrAdapter.Fill(obData, "Prueba") ' rellenar el dataset con la informacion de la hoja de calculo
DataGrid1. DataSource = obData. Tables(0).DefaultView ' crear una tabla a partir de los datos originales
aunque ahora quisiera entender mejor como funciona el dataset ya que mi meta es importar estos datos del archivo de excel a mi base de datos de mysql
la verdad te agradezco el que dediques tu tiempo para ayudar, me ha sido de mucha utilidad lo que me dices.
P.DE de casualidad sabrás como obtener en nombre de las hojas del archivo xls
El dataset tiene una colección de tables y cada DataTable tiene a su ves Rows que son los registros de tu consulta, y cada Row tiene una colección de Items que se le pasa el nombre del campo o el indice y devuelve el valor para hacer lo necesario con el.
Con respecto al nombre de la hoja, no lo h hecho, de hecho ya debo conocer los nombres de e las hojas.
Hola oye sigo con el problema para importar ahora lo que pasa es que tengo 2 opciones para mi programación :
1.- La primera es que en mi formulario agrego un datagrid el cual lleno con los datos de mi archivo .xls y luego recorro mi datagrid para ir insertando los datos en mi tabla de mysql. Pero me ha causado mucho líos y no he logrado hacerlo.
2.- Otra es sin necesidad de recorrer mi datagrid, ya que para llenar el datagrid utilice un dataset. Y de casualidad vi en un ejemplo que hay un forma de insertar los datos a mi tabla si necesidad de utilizar el comando "insert into tabla(c1, c2) values(x, y)". Pero lo perdí y ya no se com jaja.
De casualidad tu sabes como insertar mis datos en la tabla sin necesidad de utilizar el comando insert y así me puedo ahorrar mucho código
Existe un comando Update del dataset pero debe estar ligado a un dataadapter para que actualice los datos a la base de datos, esto tiene el problema que los cambios solo se reflejan si sales de la aplicación y vuelve aingresar, es el post más común por este tipo de actualizaciones así que ue no te lo recoemiendo solo pro "ahorrar unas lineas de código" que son más seguras y tienes todo el control a que le entregues el control a un objeto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas