ASP.NET - Cargar Fichero a un DataGrid
Written by lopezatienza on 7 Abril 2009 – 16:25 -En este ejemplo os voy a mostrar como obtener un fichero del equipo del cliente, subirlo al servidor, cargar los datos en un DataGrid y a continuación eliminar el fichero.
Necesitaremos un File Input:
-
<input id="File1" style="WIDTH: 350px; HEIGHT: 22px" type="file" size="39" name="File1" runat="server"/>
Además del DataGrid donde queremos insertar lo que leemos del fichero, en mi caso se llamará Datagrid, deberá tener la propiedad AutoGenerateColumns a True.
Introduciremos el código en algún evento de nuestra aplicación, por ejemplo en el evento Click de algun botón.
-
try
-
{
-
// PASO 1: Sube el fichero seleccionado al servidor
-
// Si la carpeta no existe, la crea
-
-
string Path = HttpContext.Current.Server.MapPath("");
-
if (!System.IO.Directory.Exists(Path + @"\NombreCarpeta"))
-
{
-
System.IO.Directory.CreateDirectory(Path + @"\NombreCarpeta");
-
}
-
string Archivo = string.Empty;
-
Archivo = File1.PostedFile.FileName;
-
Archivo = System.IO.Path.GetFileName(Archivo);
-
-
File1.PostedFile.SaveAs(Path + @"\NombreCarpeta\" + Archivo);
-
-
// FIN PASO 1
-
-
// PASO 2: Muestra los datos por pantalla
-
-
int NumeroFilas = 0;
-
string Lectura = "";
-
string texto;
-
-
while ((texto = sr.ReadLine()) != null)
-
{
-
NumeroFilas += 1;
-
Lectura = Lectura + texto + "|";
-
}
-
if (Lectura.EndsWith("|"))
-
Lectura.Remove(Lectura.Length - 1, 1);
-
string[] Columna = Lectura.Split('|');
-
_DT_ = ArrayToDataTable(Columna, NumeroFilas);
-
Datagrid.PageSize=15;
-
Datagrid.PagerStyle.PageButtonCount=15;
-
Datagrid.DataSource=_DT_;
-
Datagrid.DataBind();
-
-
sr.Close();
-
-
// FIN PASO 2
-
-
// PASO 3: Borra el fichero subido.
-
-
System.IO.File.Delete(Path + @"\NombreCarpeta\" + Archivo);
-
-
// FIN PASO 3
-
-
}
-
catch { }
También debereis añadir la siguiente función que se encarga de pasar del tipo Array a DataTable:
-
public DataTable ArrayToDataTable(string[] arr, int NumeroFilas)
-
{
-
//string[] header = arr[0].Split(',');
-
int i = 0;
-
string str1 = arr[0];
-
string[] item1 = str1.Split(';');
-
-
while (i < item1.Length)
-
{
-
DT.Columns.Add("Col " + i);
-
i++;
-
-
try
-
{
-
for (int theRow = 0; theRow < NumeroFilas; theRow++)
-
{
-
-
string str = arr[theRow];
-
string[] item = str.Split(';');
-
DataRow dr = DT.NewRow();
-
if (item.Length == item1.Length)
-
{
-
for (int theColumn = 0; theColumn < item.Length; theColumn++)
-
{
-
dr[theColumn] = item[theColumn];
-
}
-
DT.Rows.Add(dr);
-
}
-
else { break; }
-
-
}
-
}
-
catch { }
-
-
return DT;
-
}
**Para realizar la carga correcta del fichero al DataGrid, debemos separar los campos del fichero por el carácter separador ';' y tener cada registro en cada línea del fichero.
Nombres de clase utilizadas:
using System.Collections;
using System.Data;
using System.IO;
Tags: ASP.NET
Posted in ASP.NET |

Junio 15th, 2009 at 2:57
Hi, gr8 post thanks for posting. Information is useful!