Foros del Web » Programación para mayores de 30 ;) » .NET »

excel y visual.net

Estas en el tema de excel y visual.net en el foro de .NET en Foros del Web. Amigos tengo un problema: Tengo un archivo de excel y leo las celdas A _ B _ C Juan _ Guatemala _ - Pedro _ ...
  #1 (permalink)  
Antiguo 17/09/2003, 10:32
Avatar de jpablo52  
Fecha de Ingreso: marzo-2002
Ubicación: Guatemala
Mensajes: 42
Antigüedad: 22 años, 1 mes
Puntos: 0
excel y visual.net

Amigos tengo un problema:

Tengo un archivo de excel y leo las celdas

A _ B _ C
Juan _ Guatemala _ -
Pedro _ Honduras _ -
Luis _ Mexico 20
Andres _ Guatemala _ -


asi es la destribución de las celdas y sus datos

Todo esta bien hasta que leo la columna C por que tiene una pestaña roja en la esquina de la celda que son comentarios de la celda y no se lo puedo quitar por que son informes extensos de 15000 registros en cada documento y son mas de 100 docs

Bueno leo la columna C y lee los "-" pero no los numeros y donde estan los numeros la pestaña no esta solo donde esta el "-".

Todo esto lo hago en visual basic.net, el código esta abajo. Les agradeceria su ayuda.


Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
Dim cnn, cnExcel As ADODB.Connection
Dim rs, rsExcel As ADODB.Recordset
Dim i, j As Integer
Dim Cod, Nom, Paises, Cant, Temp, Can
Dim chars As Char
Dim banderas As Boolean

'supongo que los dos ficheros estan en el mismo directorio que el programa
'UPGRADE_WARNING: Screen property Screen.MousePointer has a new behavior. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup2065"'
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
'abro la base de datos de excel
cnExcel = New ADODB.Connection()
cnExcel.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & VB6.GetPath & "\gt200305exun.xls;Persist Security Info=False; Extended Properties=Excel 8.0;"
cnExcel.Open()
'cargo un recordset con los datos
rsExcel = New ADODB.Recordset()
rsExcel.Open("select * from [gt200305exun$]", cnExcel, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly)

'abro la base de datos de fox
cnn = New ADODB.Connection()
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & VB6.GetPath & "\db.mdb;User Id=admin;Password=;"
'cnn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=" & VB6.GetPath & "\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes ;Collate=Machine;Null=Yes;Deleted=Yes;"
cnn.Open()

'abro el recordset de fox
rs = New ADODB.Recordset()
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
'me aseguro de que esté vacío, para ahorrar tiempo
rs.Open("select * from data", cnn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)

'recorro la tabla de excel
While Not rsExcel.EOF
rs.AddNew()
'copio los campos que tienen el mismo nombre
For i = 0 To rsExcel.Fields.Count - 1
'Lectura antigua
'rs.Fields(rsExcel.Fields(i).Name).Value = rsExcel.Fields(i).Value

banderas = False

If i = 0 Then
Temp = rsExcel.Fields(i).Value
For j = 0 To Temp.Length - 1
chars = Temp.Chars(j)
If IsNumeric(chars) Then
Cod = Cod & chars
Else
If chars <> " " Then
If chars <> "-" And chars <> ":" Then
Nom = Nom & chars
banderas = True
End If
Else
If banderas = True Then
Nom = Nom & chars
banderas = False
End If
End If
End If
Next j
End If
If i = 1 Then
Paises = rsExcel.Fields(i).Value
End If

A qui es el problema

If i = 2 Then
If Not IsDBNull(rsExcel.Fields(i).Value) Then
rs.Fields("Cantidad").Value = rsExcel.Fields(i).Value
If IsNumeric("1") Then
'Cant = rsExcel.Fields(i).Value
Else
'Cant = ""
End If
End If
End If

Aqui termina por lo tando no me deja grabar

Next i

'grabando en la base de datos
rs.Fields("Codigo").Value = Cod
rs.Fields("Nombre").Value = Nom
rs.Fields("Pais").Value = Paises
'rs.Fields("Cantidad").Value = Cant

'limpiando variables
Cod = ""
Nom = ""
Paises = ""
Cant = ""

'como estos campos no me los mandaste en el mensaje no
'los meti en la hoja excel y les damos valores "manualmente"
rs.Update()
rsExcel.MoveNext()
End While

'cierror el recordset de excel
rsExcel.Close()
'UPGRADE_NOTE: Object rsExcel may not be destroyed until it is garbage collected. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1029"'
rsExcel = Nothing

'cierro el recordset de fox
rs.Close()
'UPGRADE_NOTE: Object rs may not be destroyed until it is garbage collected. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1029"'
rs = Nothing

'cierro excel
cnExcel.Close()
'UPGRADE_NOTE: Object cnExcel may not be destroyed until it is garbage collected. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1029"'
cnExcel = Nothing

'cierror fox
cnn.Close()
'UPGRADE_NOTE: Object cnn may not be destroyed until it is garbage collected. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1029"'
cnn = Nothing

'UPGRADE_WARNING: Screen property Screen.MousePointer has a new behavior. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup2065"'
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
End Sub
__________________
"Conozco a la mitad de ustedes la mitad de lo que quisiera y quiero a menos de la mitad de ustedes la mitad de lo que merecen"

Bilbo Bolson
  #2 (permalink)  
Antiguo 17/09/2003, 10:45
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
movido desde ASP
__________________
...___...
  #3 (permalink)  
Antiguo 17/09/2003, 11:32
Avatar de jpablo52  
Fecha de Ingreso: marzo-2002
Ubicación: Guatemala
Mensajes: 42
Antigüedad: 22 años, 1 mes
Puntos: 0
...no desde visual basic.net.

Leo el archivo de xls y esrccribo el la base de datos...

...,pero el clavo es la columna C que tiene comentarios en las celdas (que son como unas flechitas o pestañintas rojas en la esquina superior derecha de la celda) y cuando leo unos caracteres o letras esta bien pero si leo numeros me pone la var de lectura en DBNULL.

Gracias.
__________________
"Conozco a la mitad de ustedes la mitad de lo que quisiera y quiero a menos de la mitad de ustedes la mitad de lo que merecen"

Bilbo Bolson
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:00.