Lo que tu estas usando para leer tu excel (csv) es un datareader....
hay otra forma mas facil de leer un excel. te doy aca unejemplo que esta en C# (es facil transformarlo a VB)
Código:
Excel._Application xlApp;
Excel._Workbook xlLibro;
Excel._Worksheet xlHoja;
Excel.Sheets xlHojas;
Excel.Range xlRango = null;
xlApp = new Excel.Application();
xlLibro = xlApp.Workbooks.Open(sArchivo, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
xlHojas = xlLibro.Sheets;
xlHoja = (Excel._Worksheet)xlHojas[sHojaTrabajo];
xlApp.Visible = false;
xlApp.ScreenUpdating = false;
xlApp.DisplayAlerts = false;
Para usar este ejemplo, debes agregar una referencia a tu proyecto (interop.Excel)
la variable sArchivo, contiene el path y nombre del excel a leer.
despues de esto, para comprobar que tu excel trae todas las columnas necesarias, debes recorrer el objeto excel creado con una sentencia for como esta:
Código:
for (Int32 iFila = 1; iFila < xlHoja.UsedRange.Rows.Count; iFila++)
{
..... aca analizas las celdas del archivo
// por ejemplo, con esto lees el valor de una celda
object oObject = ((Microsoft.Office.Interop.Excel.Range)xlHoja.Cells[iFila, iColumna]).Value2;
if (oObject == null)
{
continue;
}
}
ahora respecto de poder elegir un archivo.... como te comentaba eperedo anteriormente, puedes utilizar el OpenFileDialog... esto te entrega como resultado, el path del archivo.
como adicional, puedes incluso ser mas especifico, y poner codigo en tu aplicacion para seleccionar una de las hojas dentro de tu libro.
espero te haya sido de ayuda
Saludos
Plch