2012-05-23 14 views
6

Attualmente sto scrivendo un'applicazione (C#) per generare report in un file excel, basato su altri report.Come posso cambiare il formato del testo di una cella Excel usando C#?

Il problema è che, una volta ottenuto un numero da un determinato foglio e copiato in un altro, la cella di destinazione non viene formattata correttamente e il numero non viene visualizzato correttamente.

E.g : 
Number from source : 14.34 
Number on destination : 14.345661 

Come faccio a formattare la cella di destinazione per forzare il numero di formattazione per essere la stessa cella di origine.

Grazie!

+0

Vari esempi qui "# ##".: Https://support.office.com/ it/it/article/Create-or-delete-a-custom-number-format-2d450d95-2630-43b8-bf06-ccee7cbe6864? ui = it-US & rs = it-US & ad = US –

risposta

4

Il formato di una determinata cella/intervallo in excel può essere impostato tramite codice.

public void SetCustomFormat(string format, int r, int c) 
{ 
    ((Excel.Range)xlWks.Cells[r, c]).NumberFormat = format; 
} 

Nel vostro caso specifico, credo che si avrebbe bisogno di utilizzare il formato "# .00" o

+0

Farò un tentativo. –

+0

Impossibile vedere questa variabile xlWks. È questo il foglio di lavoro? –

+0

Sì, questa è la variabile del foglio di lavoro. L'ho definito internamente al mio codice usando la variabile xlWks. – Nevyn

3

Ecco uno snippet di codice che ho utilizzato per mostrare il modello generale per la formattazione delle celle. Ovviamente, ci sono alcune variabili dichiarate, ma dovrebbe mostrarti di cosa hai bisogno.

sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).Font.Bold = true; 
sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).Interior.Color = Color.Silver.ToArgb(); 
sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null); 
sheet.get_Range("A" + CompetencyStartRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null); 

Quella prima linea, assumendo CurrentRowIndex = 1 e ColPrefix = "B", sostituendo le variabili con i valori risultanti si tradurrebbe in

sheet.get_Range("A1", "B1").Font.Bold = true; 

In ogni caso, si desidera impostare il NumberFormat. (Coming ..)

sheet.Cells[Row, Column].NumberFormat = "0.00" 
+0

Grazie per l'aiuto, ma questo è non quello che sto cercando. Sto cercando un modo per formattare il testo all'interno della cella, non la cella stessa come lo sfondo o il formato del carattere. Voglio il testo da interpretare in un altro modo –

+0

L'ultima riga nella mia risposta sembra rispondere a quello che stai cercando. Forse dovrei cancellare il resto, poiché è estraneo. A volte cerco follemente di essere completo quando dovrei essere conciso. ;-) – David

+0

Sì, l'ultima riga risolve il mio problema. Grazie: D –

Problemi correlati