Yo lo hago.. no es complicado.... código en C#
Agregas la referencia a Excel
Código asp:
Ver originalusing Excel = Microsoft.Office.Interop.Excel;
*La encuentras en el menú superior Project, en Add Reference, pestaña COM y seleccionas Microsoft Excel 12.0 Object Library (12.0 si usas Office 2007, si usas Office 2003 entonces buscas la 11.0, da lo mismo cualquiera que tengas).
Luego declaras las variables a utilizar, yo las tengo como globales, no se qué te sirva más
Código asp:
Ver originalExcel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
public OleDbConnection mconn;
public OleDbDataAdapter ad;
Ahora nos toca establecer la conexión al archivo
Código asp:
Ver originalpublic bool OpenOLEDBConnection(string path, string page) //GENERA LA CONEXIÓN CON EXCEL
{
try
{
//string strconn = @"Provider=Microsoft.Jet.Oledb.4.0; data source=" + path + ";Extended properties=\"Excel 8.0;\""; //OFFICE 2003
string strconn = @"Provider=Microsoft.ACE.OLEDB.12.0; data source=" + path + ";Extended properties=\"Excel 12.0;\""; //OFFICE 2007
mconn = new OleDbConnection(strconn);
ad = new OleDbDataAdapter("Select * from [" + page + "$]", mconn);
mconn.Open();
return true;
}
catch
{
return false;
}
}
*Como parámetro le envías la dirección del archivo que quieres abrir, con todo y nombre del mismo... y en Page colocas el nombre de la hoja del archivo que quieres leer...
La función anterior la llamas desde el siguiente método
Código asp:
Ver originalpublic DataTable LoadExcelFile(string path, string page) //TRANSFIERE DATOS DEL EXCEL A LA TABLA VIRTUAL
{
DataTable dt = new DataTable();
bool oledbconnected = OpenOLEDBConnection(path, page);
if (oledbconnected)
{
try
{
ad.Fill(dt);
mconn.Close();
return dt;
}
catch (Exception e)
{
lblError.Text = e.Message;
mconn.Close();
throw;
}
}
else
return null;
}
Esto devuelve un DataTable con los datos... de igual forma te recuerdo los parámetros, dirección del archivo y nombre de la hoja a leer...
Luego simplemente lo llamas de la siguiente forma
Código asp:
Ver originalDataTable dt = LoadExcelFile(Path, Page)
*Ahora, es posible que el nombre de la hoja del archivo que quieres abrir cambie y eso te dará problemas, por lo que el parámetro page de la sentencia anterior lo puedes obtener previamente a leer el archivo... puedes utilizar algo como lo siguiente..
Código asp:
Ver originalprivate string GetPageName(string filepath) //OBTIENE EL NOMBRE DE LA HOJA DE DATOS
{
try
{
Excel.Application excel = new Excel.Application();
Excel.Sheets sheets;
Excel.Worksheet worksheet;
System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
//Se abre el archivo
excel.Workbooks.Open(filepath, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing);
//Obtiene las hojas del libro abierto
sheets = excel.Worksheets;
worksheet = (Excel.Worksheet)sheets.get_Item(1);
//Se obtiene el nombre de la hoja
string pageName = worksheet.Name;
excel.Workbooks.Close();
excel.Quit();
System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; // restaura el CultureInfo
return pageName;
}
catch
{
return null;
}
}
Al final limpias las variables, si modificas algo recuerda guardarlo con la propiedad Close.
Código asp:
Ver originaloXL.ActiveWorkbook.Close(true, filePath, Type.Missing); //Guarda el archivo
oXL.Quit();
oXL = null;
Ahora tienes los datos en un DataTable en memoria, simplemente lo recorres para obtener cada línea y modificarla según lo vayas necesitando
Código asp:
Ver originalforeach (DataRow dr in dt.Rows)
{
string rec[] = new string(dr[0].ToString().Trim(), dr[1].ToString().Trim(), dr[2].ToString().Trim());
}
***Conste es un simple ejemplo, vos lo usás a como lo necesites... prueba a ver que tal y si tienes problemas me avisas....
PD: Si alguno necesita crear el archivo de Excel lo encuentran aquí:
psicofxp.com/forums/programacion.313/880753-crear-un-archivo-excel-c-webforms.html