Foros del Web » Programando para Internet » ASPX (.net) »

Abrir y modificar un archivo de exel

Estas en el tema de Abrir y modificar un archivo de exel en el foro de ASPX (.net) en Foros del Web. hi a todos los foristas Disculpen pero alguien podria decirme como abrir y modificar un archivo de excel en asp.net...Urgente porfa si alguien podria ayudarme...
  #1 (permalink)  
Antiguo 29/08/2009, 10:56
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
De acuerdo Abrir y modificar un archivo de exel

hi a todos los foristas

Disculpen pero alguien podria decirme como abrir y modificar un archivo de excel
en asp.net...Urgente porfa si alguien podria ayudarme
  #2 (permalink)  
Antiguo 03/09/2009, 12:04
Avatar de ah_puch  
Fecha de Ingreso: agosto-2005
Ubicación: Ecatepec, México
Mensajes: 180
Antigüedad: 18 años, 8 meses
Puntos: 3
Respuesta: Abrir y modificar un archivo de exel

la unica forma que conosco es con este cab
ViewOffice.CAB pero la verdad no te lo recomiendo hace muchas barbaridades pero si enverdad lo nesesitas esta es tu posible solucion
supuestamente esta compañia lo perfecciono pero sinceramente ya no lo probe
http://www.ocxt.com/products?gclid=C...FYlM2godTkQSKQ

y la primer version liberada de microsoft lo encuntras aqui:
http://www.microsoft.com/downloads/d...displaylang=en


espero te sirvas mas de lo que me sirvio a mi SERTE!!!
__________________
La programacion no es un trabajo, es un Arte
http://www.purodev.blogspot.com

Última edición por ah_puch; 03/09/2009 a las 12:17
  #3 (permalink)  
Antiguo 07/09/2009, 12:02
 
Fecha de Ingreso: septiembre-2009
Mensajes: 31
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Abrir y modificar un archivo de exel

Yo lo hago.. no es complicado.... código en C#

Agregas la referencia a Excel

Código asp:
Ver original
  1. using 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 original
  1. Excel.Application oXL;
  2. Excel._Workbook oWB;
  3. Excel._Worksheet oSheet;
  4. public OleDbConnection mconn;
  5. public OleDbDataAdapter ad;


Ahora nos toca establecer la conexión al archivo


Código asp:
Ver original
  1. public bool OpenOLEDBConnection(string path, string page) //GENERA LA CONEXIÓN CON EXCEL
  2.         {
  3.             try
  4.             {
  5.                 //string strconn = @"Provider=Microsoft.Jet.Oledb.4.0; data source=" + path + ";Extended properties=\"Excel 8.0;\""; //OFFICE 2003
  6.                 string strconn = @"Provider=Microsoft.ACE.OLEDB.12.0; data source=" + path + ";Extended properties=\"Excel 12.0;\""; //OFFICE 2007
  7.                 mconn = new OleDbConnection(strconn);
  8.                 ad = new OleDbDataAdapter("Select * from [" + page + "$]", mconn);
  9.                 mconn.Open();
  10.                 return true;
  11.             }
  12.             catch
  13.             {
  14.                 return false;
  15.             }
  16.         }


*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 original
  1. public DataTable LoadExcelFile(string path, string page) //TRANSFIERE DATOS DEL EXCEL A LA TABLA VIRTUAL
  2.         {
  3.             DataTable dt = new DataTable();
  4.             bool oledbconnected = OpenOLEDBConnection(path, page);
  5.             if (oledbconnected)
  6.             {
  7.                 try
  8.                 {
  9.                     ad.Fill(dt);
  10.                     mconn.Close();
  11.                     return dt;
  12.                 }
  13.                 catch (Exception e)
  14.                 {
  15.                     lblError.Text = e.Message;
  16.                     mconn.Close();
  17.                     throw;
  18.                 }
  19.             }
  20.             else
  21.                 return null;
  22.         }


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 original
  1. DataTable 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 original
  1. private string GetPageName(string filepath) //OBTIENE EL NOMBRE DE LA HOJA DE DATOS
  2.         {
  3.             try
  4.             {
  5.                 Excel.Application excel = new Excel.Application();
  6.                 Excel.Sheets sheets;
  7.                 Excel.Worksheet worksheet;
  8.                 System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
  9.                 System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
  10.                 //Se abre el archivo
  11.                 excel.Workbooks.Open(filepath, Type.Missing, Type.Missing, Type.Missing,
  12.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  13.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  14.                 Type.Missing);
  15.                 //Obtiene las hojas del libro abierto
  16.                 sheets = excel.Worksheets;
  17.                 worksheet = (Excel.Worksheet)sheets.get_Item(1);
  18.                 //Se obtiene el nombre de la hoja
  19.                 string pageName = worksheet.Name;
  20.                 excel.Workbooks.Close();
  21.                 excel.Quit();
  22.                 System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; // restaura el CultureInfo
  23.                 return pageName;
  24.             }
  25.             catch
  26.             {
  27.                 return null;
  28.             }
  29.         }

Al final limpias las variables, si modificas algo recuerda guardarlo con la propiedad Close.

Código asp:
Ver original
  1. oXL.ActiveWorkbook.Close(true, filePath, Type.Missing); //Guarda el archivo
  2. oXL.Quit();
  3. 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 original
  1. foreach (DataRow dr in dt.Rows)
  2.                                 {
  3. string rec[] = new string(dr[0].ToString().Trim(), dr[1].ToString().Trim(), dr[2].ToString().Trim());
  4. }

***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

Última edición por darkandres123; 08/09/2009 a las 10:06 Razón: Formato
  #4 (permalink)  
Antiguo 11/05/2011, 11:01
 
Fecha de Ingreso: febrero-2005
Mensajes: 125
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Abrir y modificar un archivo de exel

probaremos pues. tonce
__________________
"Si por un instante Dios se olvidara que soy una marioneta de trapo y me regalara un trozo de vida, no hablaria todo lo que pienzo en difinitiva pensaria todo lo que hablo"
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




La zona horaria es GMT -6. Ahora son las 11:46.