Visual Basic - Leer datos específicos de Excel desde VB

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Patricia

Leer datos específicos de Excel desde VB

Publicado por Patricia (3 intervenciones) el 18/04/2016 16:53:03
Hola buen día.

Tengo un archivo en Excel del cual necesito consultar cierta información desde VB. La estructura del archivo es la siguiente, solo necesito lo que marque en rojo (Cuenta y Cargo) para poder guardarlo en un DataGridView. Tengo el código para leer todo el contenido pero no se como hacerle para seleccionar solo lo que necesito, si alguien me puede ayudar se lo agradecería infinitamente.

ejemplo

tiene que quedar masomenos asi mi DataGridView

2
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
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Leer datos específicos de Excel desde VB

Publicado por Juan Gilberto (323 intervenciones) el 19/04/2016 17:27:50
Si presentaras tu codigo sería mas facil que alguien te ayudara

Un archivo excel lo puedes leer con ADO y el resultado sería un recordset
y para accesar esos campos en especial loa harias mas o menos asi: rs.fields(0) y rs.fields(5), siendo rs el nombre del recordset resultante...

Lo puedes leer tambien utilizando la libreria de excel y utilizando la interfase del objeto
y para accesar esos campos seria como accesar una gran matriz, Celda(renglon, columna)
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
Imágen de perfil de Patricia

Leer datos específicos de Excel desde VB

Publicado por Patricia (3 intervenciones) el 19/04/2016 18:13:05
Hola buen dia.

El archivo .xls que estoy leyendo lo genera un programa contable y tiene alrededor de 6500 registros, el código siguiente es el que uso para leer todo el archivo. Pero con este leo todos los datos de la hoja y los muestro en un DataGrindView... a mi solo me interesa leer la Cuenta y el Cargo para poder guardarlos en una base de datos y es ahi cuando no se como hacerle, agradeceria cualquier ayuda :D

Gracias ;)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub btnImportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImportar.Click
	Dim nombreArchivo As New String
	Dim Abrir As New OpenFileDialog
	Dim objConn As OleDbConnection
	Dim oleDA As OleDbDataAdapter
	Dim ds As DataSet
 
	Abrir.Filter = "Todos los archivos (*.XLS)|*.xls"
	If Abrir.ShowDialog = Windows.Forms.DialogResult.OK Then
		nombreArchivo=Abrir.FileName
	End If
 
	Try
		Dim connectionString As String = "Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & nombreArchivo & ";Extended       Properties=""Excel 12.0;HDR=YES;IMEX=1"""
		objConn = New OleDbConnection(connectionString)
		oleDA = New OleDbDataAdapter("select * from [Reporte de Compac$]", objConn)
		ds = New DataSet()
		oleDA.Fill(ds)
		DataGridView2.DataSource = ds.Tables(0)
 
		ds.Dispose()
		oleDA.Dispose()
		objConn.Dispose()
	Catch ex As Exception
	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
Imágen de perfil de Patricia

Leer datos específicos de Excel desde VB

Publicado por Patricia (3 intervenciones) el 21/04/2016 17:07:51
Hola a todos!!

Estos días he estado programando sin parar y por fin lo logre...les dejo el código por si a alguien le sirve en un futuro, probablemente necesite optimizarse pero igual funciona, esta muy diferente a como empece. Todavía me falta guardarlo en la base de datos pero sigo trabajando en eso.

Saludos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Private Sub ImportarExcel4(ByVal nombreArchivo As String)
	Dim EXL As Excel.Application
	EXL = New Excel.Application
	Dim W As Excel.Workbook
	W = EXL.Workbooks.Open(nombreArchivo)
	Dim S As Excel.Worksheet
	Dim i As Integer
	Dim c As Integer
	Dim A As String = "A"
	Dim F As String = "F"
	Dim cuenta As String
	Dim cargo As String
	Dim Celda As String
	Dim numRows As Integer
	c = 0
	S = W.Sheets("Reporte de Compac")
 
	numRows = S.Range("A65536").End(Excel.XlDirection.xlUp).Row
 
	For i = 10 To numRows
		Celda = A & i
 
		If S.Range(Celda).Font.Bold = True Then
			cuenta = S.Range(Celda).Value
			dgv.Rows.Add(cuenta)
		End If
	Next
 
 
	For i = 10 To (numRows - 9)
		Celda = F & i
 
		If S.Range(Celda).Font.Bold = True Then
			cargo = CDbl(S.Range(Celda).Value)
			dgv.Rows(c).Cells(1).Value = cargo
			c = c + 1
		End If
	Next
 
	S = Nothing
	W.Close()
	W = Nothing
	EXL = Nothing
 
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