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

Leer una celda de Excel con formato de número

Estas en el tema de Leer una celda de Excel con formato de número en el foro de ASPX (.net) en Foros del Web. Hola a todos los foristas, tengo un gran problema, pero espero que alguno de ustedes me pueda ayudar: Actualmente estoy desarrollando una aplicación en ASP.NET ...
  #1 (permalink)  
Antiguo 13/11/2008, 09:36
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Leer una celda de Excel con formato de número

Hola a todos los foristas, tengo un gran problema, pero espero que alguno de ustedes me pueda ayudar:

Actualmente estoy desarrollando una aplicación en ASP.NET con C# para leer archivos de Excel. Hasta ahora no había tenido ningún problema, ya que en teoría todos los campos de mi archivo Excel deberían tener asignado un formato de celda tipo Texto o General, pero resulta que esto no siempre es así. Para poder leer el archivo Excel estoy haciendo uso de la dll Microsoft.Office.Interop.Excel

En uno de mis archivos de excel existe una columna que puede contener una fecha o una descripción:
A
-----------------------
12/12/2000 <- Formato de Celda = Fecha Corta
01/04/2001 <- Formato de Celda = Fecha Corta
No Especificada <- Formato de Celda = Fecha General
24/12/2001 <- Formato de Celda = Fecha Corta
No Especificada<- Formato de Celda = General

Ahora bien, cuando recupero el valor de la celda en cuestión, para el caso de aquellas celdas que tienen Formato de Celda tipo Fecha me recupera los siguientes valores:

12/12/2000 -> 36872
01/04/2001 -> 36982
24/12/2001 -> 37249

Para recuperar el valor de la celda primeramente me pusiciono en dicha celda (usando un objeto tipo Rango) y recupero su propiedad Value2. Abajo pongo el código completo para leer el archivo

¿Mi pregunta es cómo puedo hacer para recuperar el valor de la celda correctamente sin que me cambie el valor que tiene de origen?

Para leer mi archivo Excel hago lo siguiente:
Código:
//Declaración de Variables
Excel.Application APexcel = null;
Excel.Workbook Libro = null;
Excel.Worksheet Hoja = null;
Excel.Range Rango = null

try
        {
            //Para iniciar una instancia de Excel
            APexcel = new Microsoft.Office.Interop.Excel.Application();
            APexcel.Visible = false;
            //Para abrir el Archivo de Excel
            Libro = APexcel.Workbooks.Open("c:/Archivo.xlsx", Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            Hoja = (Excel.Worksheet)Libro.ActiveSheet;
            //Me posiciono en la primer celda de mi documento
            Rango = Hoja.get_Range("A1", "A1");
            //Ciclo para recorrer todos los renglones hasta que encuentra una celda vacía
            Renglon = 1;
            while (Rango.Value2 != null)
            {
                  Recupero el valor de la celda
                   Valor = Rango.Value2.ToString(); 
                    /*
                   Aquí hago algunas cosas dependiendo del valor de la celda, pero para el
                   ejempo no es necesario ponerlas
                   */
                    Renglon++;
                    //Me posiciono en la primer celda del siguiente renglón a analizar (A2, A3, A4 etc)
                   Rango = Hoja.get_Range("A" + Renglon.ToString(), "A" + Renglon.ToString());
                   Rango.Select();
            }
            //Cierro el Libro
            Libro.Close(Type.Missing, Type.Missing, Type.Missing);
        }
        catch (Exception ex)
        {
           Error = ex.ToString();
        }
        finally
        {
            //Liberar Recursos
            if (APexcel != null)
            {
                APexcel.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(APexcel);
                APexcel = null;
            }
            if (Libro != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(Libro);
                Libro = null;
            }
            if (Hoja != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(Hoja);
                Hoja = null;
            }
            if (Rango != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(Rango);
                Rango = null;
            }
            GC.Collect();
        }
Espero que alguno de ustedes me pueda ayudar y de antemano muchas gracias.
Leo
  #2 (permalink)  
Antiguo 13/11/2008, 13:29
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Leer una celda de Excel con formato de número

En otro foro ya me dieron la respuesta (gracias Yamil), en lugar de utilizar la instrucción
Value2 debes utilizar Rango.Text, con esto te regresa el valor sin cambiar a número decimal.

Saludos
  #3 (permalink)  
Antiguo 16/11/2008, 10:25
Avatar de krakxp  
Fecha de Ingreso: junio-2006
Ubicación: NA
Mensajes: 105
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Leer una celda de Excel con formato de número

Cita:
Iniciado por leonardo_josue Ver Mensaje
En otro foro ya me dieron la respuesta (gracias Yamil), en lugar de utilizar la instrucción
Value2 debes utilizar Rango.Text, con esto te regresa el valor sin cambiar a número decimal.

Saludos
Hola oie puedes postear la soluion es ke tambien andao trbajdno con diferentes tipos de formatos de columna.

gracias
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 16:17.