Visual Basic.NET - Leer excel y guardar datos en tablas de sql

 
Vista:

Leer excel y guardar datos en tablas de sql

Publicado por Rodrigo (8 intervenciones) el 04/03/2008 20:20:22
Salu2 estoy haicendo una aplicación web para leer los datos de una hoja de excel y guardarlos en uns tabla en sql.

En el evento click del button programo la lectura del excel:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim bodega_hoja As String = "BODEGA"
Dim appExcel As Object
Dim Fila As Integer = 2
Dim cod As Integer
Dim bloq As String
Dim num As String
Dim dim As Integer

appExcel = CreateObject("Excel.Application")
Dim mstrRutaOrigen As String = Path.GetFullPath(FileUpload1.PostedFile.FileName.ToString)
Dim bodega_libro As String = mstrRutaOrigen
appExcel.Workbooks.open(filename:=bodega_libro)
cn.Open()

With appExcel.Sheets(bodega_hoja)
.Select()
While .Cells(Fila, 1).Value > 0
cod = .Cells(Fila, 1).Value
bloq = .Cells(Fila, 2).Value
num = .Cells(Fila, 3).Value
dim = .Cells(Fila, 4).Value
insertar_datos_bodega(cod, bloq, num, dim)
End If
Fila = Fila + 1
End While
End With
End Sub

y con este procedimiento supuestamente deberia insertar los datos en la tabla.

Private Sub insertar_datos_bodega(ByVal cod_usuario As Integer, ByVal bod_bloq As String, ByVal bod_num As String, ByVal bod_dim As Integer)
With cmd
.Connection = cn
.CommandType = CommandType.Text
.CommandText = "INSERT INTO BODEGA ([id], [bloque], [numero], [dimension]) VALUES (" & cod & ", '" & bloq & "', '" & num & "', " & dim & ")"
.ExecuteNonQuery()
Label2.Text = "¡Regristos actualizados con éxito!"
End With
End Sub

Pero al ejecutarlo me da el siguiente error:

Server Error in '/excel' Application.
--------------------------------------------------------------------------------

Cannot create ActiveX component.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Exception: Cannot create ActiveX component.

Source Error:

Line 42: appExcel = CreateObject("Excel.Application")
Line 43: Dim mstrRutaOrigen As String = Path.GetFullPath(FileUpload1.PostedFile.FileName.ToString)
Line 44: Dim bodega_libro As String = mstrRutaOrigen

Ya he hecho varias tips que me han recomendado como ingresar a herramientas administrativas del panel de control y escoger componentes de Servicios, luego en DCOM Config escoger Microsoft Excel Application y en sus propiedades en la pestaña de seguridad agregar el usuario ASP.NET y varios más pero nada funciona me sigue saliendo ese error.

Por favor alguna ayuda o si hay alguna otra forma de hacer lo que necesito se los agradecería muchisimo que me lo hagan saber.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer excel y guardar datos en tablas de sql

Publicado por JorgeE (16 intervenciones) el 05/03/2008 20:27:46
Hola
mira yo hago algo parecido, checa este codigo: clavessub= al nombre de la hoja con los datos

Private Sub LeeArchivoExterno()
Dim DS As DataSet
Dim Reng As DataRow
Dim cmdDS As OleDb.OleDbDataAdapter
Dim ConOLE As OleDb.OleDbConnection
Dim r As Integer = 0
Dim wArchivo As String
Try

If Me.OpenFileDialog1.ShowDialog() = DialogResult.OK Then
wArchivo = OpenFileDialog1.FileName
Else
Exit Sub
End If

ConOLE = New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & _
"data source=" + wArchivo + ";" & _
"Extended Properties='Excel 8.0;HDR=YES;IMEX=1'")

cmdDS = New OleDb.OleDbDataAdapter("select * from [clavessub$]", ConOLE)

DS = New DataSet
cmdDS.Fill(DS)
ConOLE.Close()
Me.C1FlexGrid1.Rows.Count = 1
For Each Reng In DS.Tables(0).Rows
r = r + 1
Me.C1FlexGrid1.AddItem(IIf(IsDBNull(Reng(0)), " ", Str(Reng(0))), r)
Next

Me.C1FlexGrid1.Refresh()

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer excel y guardar datos en tablas de sql

Publicado por Rodrigo (8 intervenciones) el 05/03/2008 20:45:47
GRacias por tu respuesta, pero no entiendo que exactamente haces con ese codigo, lees el excel y de ahi lo muestras en un grid.
Como sería si quisiera guardarlos en la base de datos sql?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer excel y guardar datos en tablas de sql

Publicado por JorgeE (16 intervenciones) el 05/03/2008 20:58:50
lo que hace la rutina es.
leer una archivo de Excel y lo guarda en un DataSet. este a su vez para mostrarlo lo paso a un GRID.
ahora bien para guardar los valores en SQL, solo necesitaria leer el contenido del GRID,
mediante FOR...NEXT
y a continuacion hacer la sentencia INSERT/UPDATE en un COMMANDTEXT. con los valores del GRID leidos.... el echo que este en el grid no significa que el INSERT lo uses de diferente forma, es igual, son variables de uso general.por lo tanto el uso del INSERT es el tradicional.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer excel y guardar datos en tablas de sql

Publicado por Rodrigo (8 intervenciones) el 05/03/2008 23:13:21
Gracias por tu respuesta pero lo veo como medio complicado leer el excel, pasarlo al dataset, después pasarlo al grid y por último pasarlo a la tabla, porque no se podría del excel pasarlo directamente a la tabla que tiene la misma estructura sin mostrarlo en el grid? O me equivoco? y esto que yo quiero no se puede hacer.?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer excel y guardar datos en tablas de sql

Publicado por JorgeE (16 intervenciones) el 06/03/2008 17:46:34
realmente no se puede asi como lo dices, forzozamente tienes que leerlo y pasarlo a un datset, yo lo pongo en un grid, por que deseo ver el contenido de ese archivo de excel.
ahora bien, tu solo tendrias que pasarlo a un DataSet y de ahi insertarlo a una tabla de sql.
francamente es la unica forma de hacerlo, si conoces o das con alguna otra, pues seria bueno que lo publicaras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar