
01/12/2009, 12:55
|
| | Fecha de Ingreso: noviembre-2009
Mensajes: 26
Antigüedad: 15 años, 2 meses Puntos: 0 | |
Respuesta: Duda cargar fichero ado.net Buenas noches... :)
Parece que no es tan facil como pensaba, el caso es que el código está preparado para cargar una sola columna tipo
carlos,peres,4659887
lo mio es mas complicado, a parte de tener cabecera, mi excel, cada campo tiene su columna... no se si será muy complicado perdirselo al código... podeis ayudarme?
gracias de antemano...
pego el codigo del windowsapllication :)
Option Explicit On
Imports System.Array
Imports System.IO
Imports System.Data.OleDb
Public Class Form1
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' inicializar el array para los encabezados de columna
Dim aCol() As String = {"fecha_import", "incidentfile", "VIM", "type", "fecharegistro", "nombre_archivo"}
Dim ofd As New OpenFileDialog()
ofd.ShowDialog()
End Sub
Private Sub Cargar_Csv( _
ByVal lv As ListView, _
ByVal sPathCsv As String, _
ByVal aColumnHeader As String(), _
ByVal sDelimitador As String)
Try
' verificar que la ruta sea correcta
If File.Exists(sPathCsv) = False Then
MsgBox("No se encontró el archivo: " & sPathCsv)
Exit Sub
End If
With lv
.Columns.Clear() ' eliminar todos los encabezados
.Items.Clear() ' eliminar todos los items cargados
' recorre el vector y añade las cabeceras
For i As Integer = 0 To UBound(aColumnHeader)
.Columns.Add(aColumnHeader(i)).ToString()
Next
.View = View.Details ' vista detalle
' Abre el archivo para leer cada línea
Dim sr As New StreamReader(sPathCsv)
Dim aDatos() As String ' vector para el cvs
' recorrer todas las líneas hasta el final del archivo
Do While (sr.Peek >= 0)
' leer la línea y separar los datos con split
aDatos = sr.ReadLine.Split(sDelimitador)
' listview: Añadir los items y SubItems
''''''''''''''''''''''''''''''''''''''''''''''''
Dim Item As New ListViewItem(aDatos(0).ToString)
For i As Integer = 1 To UBound(aDatos)
With Item
.SubItems.Add(aDatos(i).ToString)
End With
Next
.Items.Add(Item)
Loop
sr.Close() ' cierra el streamReader
End With
' error
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub Button2_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Try
If lv.Items.Count = 0 Then
MsgBox("No hay datos para agregar", MsgBoxStyle.Information)
Exit Sub
End If
' Inicializar y abrir la conexión a la base de datos
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=datos.mdb")
cn.Open()
' inicializar el comando para insertar los registros
Dim Comando As New OleDbCommand()
Comando.Connection = cn ' asigna la conexión al OleDbCommand
' Recorrer los items
With lv
For i As Integer = 0 To .Items.Count - 1
' sql
Comando.CommandText = "INSERT INTO " & _
"tContactos(Nombre,Apellido,Telefono) " & _
"Values('" & .Items(i).Text & _
"','" & .Items(i).SubItems(1).Text & _
"','" & .Items(i).SubItems(2).Text & _
"')"
' Ejecutar el sql
Comando.ExecuteNonQuery()
Next
MsgBox("Listo", MsgBoxStyle.Information, "Exportar a Access")
End With
' cierra la conexión
cn.Close()
' errores
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Leer Csv en Listview"
Button2.Text = "Exportar a Ms Aceess"
End Sub
Private Sub lv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lv.SelectedIndexChanged
End Sub
End Class |