2010-09-30 77 views
6

Estoy usando la aplicación de Windows. En esa aplicación, exporté DataGrid a Excel con éxito ... Ahora el problema es: cuando exporté desde Grid a la hoja de Excel, los valores de celda tienen alguna marca de color verde en la esquina superior izquierda de la hoja de Excel ... Pensé ese es un tipo de problema de molde. ¿Cómo debo evitar ese problema ... y cómo cambiar el valor de celda de texto a número ... (es decir, convertir a número ...Convertir el valor de celda de Excel de texto a número usando C#

¿Alguien me puede dar la solución a este problema?

Gracias de antemano

Mi código para dar formato a esa hoja de Excel para un cierto rango de valores,

wksheet.Range[GetRanges[0].ToString(), GetRanges[GetRanges.Count-2].ToString()].Merge(); 

wksheet.get_Range(GetRanges[0].ToString(), GetRanges[GetRanges.Count-].ToString()).Interior.Color = Color.FromArgb(192, 0, 0); 

Respuesta

7

yo no tengo una máquina de Windows para poner a prueba en este momento, pero tal vez me gustaría probar a cambiar el formato de celda, por ejemplo:

my_range.NumberFormat = "0.0"; // change number of decimal places as needed 

Aquí está un ejemplo completo de Microsoft: How to automate Microsoft Excel from Microsoft Visual C#.NET.

+0

Si es int significa qué debo dar dentro de esa cadena que me enviaste – Suryakavitha

+0

Ok yar Muchas gracias. . Lo comprobaré y te diré – Suryakavitha

0

Cuando se asigna el valor de las células, tratar de conseguir todos los valores en un 2 dimensiones matriz primero y luego asignar la matriz al Rango. de esta manera va a ser muy rápido y también creo que los valores en la celda serán números. probarlo ... es de esperar que debería funcionar

+0

lo tengo como una matriz bidimensional solamente ... Quiero convertir un rango de valores a Número ... – Suryakavitha

1

La siguiente rutina rellenará dinámicamente una hoja de cálculo a partir de datos (texto y números) en un archivo de texto.

kicker está utilizando una matriz de objetos para establecer los valores.

StreamReader STRead; 
String[] STCells; 
object[] cellData; 
int temp; 
Excel.Range tempRange; 
for (int i = 0; i < FileList.Length; i++) 
{ 
    STRead = FileList[i].OpenText(); 
    int j = 0; 
    while (!STRead.EndOfStream) 
    { 
     STCells = STRead.ReadLine().Split(','); 
     cellData = new object[STCells.Length]; 
     for (int k = 0; k < STCells.Length; k++) 
     { 
      if (Int32.TryParse(STCells[k], out temp)) 
       cellData[k] = temp; 
      else 
       cellData[k] = STCells[k]; 
     } 
     tempRange = sheetList[i].get_Range(ReturnCellID(j, 0), 
              ReturnCellID(j, STCells.Length - 1)); 
     j++; 
     tempRange.Value2 = cellData; 
    } 
    STRead.Close(); 
} 
0

Cambiar el valor de la celda de texto al número es fácil con Excel Jet Cell .NET component.

Cell["A1"].Style.StringFormat = "##.#"; // or "0.0" same as in MS Excel 
1

he tenido este problema con una hoja de Excel que contiene los dos números regulares y ciento (resultado de una exportación de las cadenas de un informe de Crystal).

Para cambiar todos ellos a la vez que hice un bucle algo como esto:

//example range 
Excel.Range rng = mWorkSheet.get_Range("A1", "H25"); 
foreach (Excel.Range range in rng) 
{ 
    if (range.Value != null) 
    { 
     int number; 
     bool isNumber = int.TryParse(range.Value.ToString().Trim(), out number); 
     if (isNumber) 
     { 
      range.NumberFormat = "#,##0"; 
      range.Value = number; 
     } 
     else 
     { 
      //the percent values were decimals with commas in the string  
      string temp = range.Value.ToString(); 
      temp = temp.Replace(",", "."); 
      range.Value = temp; 
     } 
    } 
} 

resultado fue que tanto las cadenas de porcentaje y los números consiguieron convertir en el formato correcto Excel.

Cuestiones relacionadas