Visual Basic.NET - Importar de Excel a Acces mediante Visual.net

 
Vista:

Importar de Excel a Acces mediante Visual.net

Publicado por Maria (6 intervenciones) el 03/04/2008 15:59:17
Buenas a todos, estoy intentando leer un archivo de excel mediante .net para luego poderlo insertar en una tabla de acces pero no me deja leer el contenido de una celda, no sé lo que estoy haciendo mal???

Dim m_Excel As Excel.Application
Dim objLibroExcel As Excel.Workbook
Dim objHojaExcel As Excel.Worksheet
Dim filename As String
Dim Registros As Integer

m_Excel = New Excel.Application
m_Excel.Visible = False
filename = Me.txtFichero_Path.Text
objLibroExcel = m_Excel.Workbooks.Open(filename)
objHojaExcel = CType(objLibroExcel.Worksheets(1), Excel.Worksheet)
objHojaExcel.Activate()

' Para leer una celda seria....

objHojaExcel.Cells(0, 1) ????????

Gracias
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:Importar de Excel a Acces mediante Visual.net

Publicado por Harold V (411 intervenciones) el 03/04/2008 21:30:27
Un pequenho ejemplo......
Espero te ayude, fujnciona con sql server pero modificarlo a access no es complicado.

referencia Microsoft.Excel

Imports System.Data.SqlClient
Imports Microsoft.Office.Interop


'Excel
Dim App As Excel.Application
Dim Book As Excel.Workbook
Dim Hoja As Excel.Worksheet

'SQL
Dim Reader As SqlClient.SqlDataReader
Dim Cn As New SqlConnection("Database=midatabase;Data Source=localhost;User Id=sa;Password=")
Dim cmd As New SqlCommand("Select * from tblPersonal", Cn)

'tblPersonal
Dim MyID As integer
Dim codempleado As String
Dim codempresa As String

'Informacion incorporacion
Dim FechaIncorp As DateTime
Dim Info As Boolean

Dim Import As Boolean = False


Private Sub cmdImportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdImportar.Click

App = New Excel.Application
Book = App.Workbooks.Open("c: ulibro.xls")
Try
Hoja = App.Worksheets("Personal")
Catch ex As Exception
MessageBox.Show("En este archivo no existe la ficha (Personal)", "Importar desde Excel", MessageBoxButtons.OK, MessageBoxIcon.Information)
ex.Data.Clear()
CloseExcelApp()
Exit Sub
End Try

'Aqui importamos
ExcelImport()

End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Import = True Then
Cn.Close()
CloseExcelApp()
End If
End Sub

Sub UpdateInformacionIncorporacion(ByVal valInfo As Boolean, ByVal valFechaInc As DateTime)

'Informacion Incorporacion
If (valInfo <> False) And (valFechaInc <> Nothing) Then
Dim cmdUpdateInfoinc As New SqlCommand("Update tblInformacionIncorporacion set Info=@Info,Fecha=@FechaInc where Id=" & MyID , Cn)
cmdUpdateInfoinc.Parameters.Add("@Info", SqlDbType.Bit).Value = valInfo
cmdUpdateInfoinc.Parameters.Add("@FechaInc", SqlDbType.DateTime, 10).Value = valFechaInc
cmdUpdateInfoinc.ExecuteNonQuery()
cmdUpdateInfoinc.Parameters.Clear()
End If

End Sub

Sub CloseExcelApp()

Book.Close(Excel.XlSaveAction.xlSaveChanges = Excel.XlSaveAction.xlDoNotSaveChanges)
App.Quit()
For Each xl As System.Diagnostics.Process In System.Diagnostics.Process.GetProcessesByName("Excel")
xl.Kill()
Next
App = Nothing

End Sub


Sub ExcelImport()

Import = True
Cn.Open()
Try
With Hoja 'Worksheet Personal
For x As Int32 = 3 To Registros
Application.DoEvents()
lblRegistros.Text = x.ToString & " / " & Registros
If .Range("A" & x).Value <> Nothing And .Range("D" & x).Value <> Nothing Then

codempresa = .Range("A" & x).Value
codempleado = .Range("D" & x).Value

Reader = cmd.ExecuteReader()
While Reader.Read
If codempresa = Reader.Item("codigoEmpresa").ToString And codempleado = Reader.Item("CodigoEmpleado").ToString Then
MyID = cint(eader.Item("Id"))
Exit While
End If
End While
Reader.Close()


'Informacion incorporacion'''''''''''''''''''''''''''''
If .Range("K" & x).Value = "SÍ" Then
Info = 1
Else
Info = 0
End If
FechaIncorp = .Range("L" & x).Value

UpdateInformacionIncorporacion(Info, FechaIncorp)

Application.DoEvents()
Next
End With
Import = False
MessageBox.Show("LOS DATOS SE IMPORTARON CORRECTAMENTE........", "Importación desde Excel", MessageBoxButtons.OK, MessageBoxIcon.Information)

Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
Cn.Close()
CloseExcelApp()
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