2011-09-28 7 views
18

Escribo números en una hoja de cálculo de Excel de DataTable y todos estos números tienen 5 dígitos y 0 precedentes si el número tiene menos de 5 dígitos. (por lo que 395 se almacenaría como 00395, por ejemplo).C# Interoperabilidad de Excel: Cómo formatear celdas para almacenar valores como texto

Al ingresar estos números en Excel (usando C#), los almacena como números y elimina los 0 anteriores. ¿Hay alguna manera de formatear las celdas desde C# para que los valores se almacenen como texto en lugar de números?

+2

Vea esta respuesta http://stackoverflow.com/questions/2067926/format-an-excel-column-or-cell-as-text-in-c – katit

+1

@Katit: Mientras que los partidos de interrogación , la respuesta aquí es mejor en mi humilde opinión, ya que no depende de bibliotecas de terceros. –

+0

Sí, no se dio cuenta de que – katit

Respuesta

24

Puedes SomeRange.NumberFormat = "@"; o si prefijas el valor con ' y lo escribes en la celda excel lo tratarás como un número almacenado como texto y proporcionarás una señal visual.

+0

¡Gracias, eso lo solucionó! Muy apreciado. – Closeratio

2

Esta respuesta resolvió un problema importante con una solución de uno de los software de nuestra compañía, tuve que recuperar el valor tal como se muestra, pero una vez que lo configuré en la nueva hoja, se lo insertó como un número. Solución simple. No puedo votar hasta ahora, pero sigue cómo terminó.

for (int h = 1; h <= 1; h++) 
{ 
    int col = lastColl(sheets); 
    for (int r = 1; r <= src.Count; r++) 
    { 
     sheets.Cells[r, col + 1] = "'"+src.Cells[r, h].Text.ToString().Trim(); 
    } 
} 
0

// donde [1] es el número de columna que desea hacer que el texto

ExcelWorksheet.Columns[1].NumberFormat = "@"; 

// Si desea dar formato a una columna concreta en todas las hojas de un libro - utilizar a continuación código. Quite el lazo para una sola hoja junto con ligeros cambios.

// ruta del archivo de Excel se mantiene eran

cadena ResultsFilePath = @ "C: \ Users \ krakhil \ Desktop \ TGUW EXCEL \ TEST";

Excel.Application ExcelApp = new Excel.Application(); 
    Excel.Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(ResultsFilePath); 
    ExcelApp.Visible = true; 

    //Looping through all available sheets 
    foreach (Excel.Worksheet ExcelWorksheet in ExcelWorkbook.Sheets) 
    {     
     //Selecting the worksheet where we want to perform action 
     ExcelWorksheet.Select(Type.Missing); 
     ExcelWorksheet.Columns[1].NumberFormat = "@"; 
    } 

    //saving excel file using Interop 
    ExcelWorkbook.Save(); 

    //closing file and releasing resources 
    ExcelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing); 
    Marshal.FinalReleaseComObject(ExcelWorkbook); 
    ExcelApp.Quit(); 
    Marshal.FinalReleaseComObject(ExcelApp); 
Cuestiones relacionadas