2012-05-23 13 views
6

Obecnie piszę aplikację (C#) do generowania raportów w pliku Excel, w oparciu o inne raporty.Jak mogę zmienić format tekstu komórki Excel za pomocą C#?

Problem polega na tym, że po uzyskaniu numeru z określonego arkusza i skopiowaniu go do innego, komórka docelowa nie jest poprawnie sformatowana, a numer nie wyświetla się poprawnie.

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

Jak mogę sformatować komórkę docelową, aby zmusić numer formatowania być taka sama, jak w komórce źródłowej.

Dzięki!

+0

różnych przykładów tutaj „# ##.”: Https://support.office.com/ en-us/article/Utwórz-lub-usuń-a-custom-number-format-2d450d95-2630-43b8-bf06-ccee7cbe6864? ui = en-US & rs = en-US & ad = US –

Odpowiedz

4

Format danej komórki/zakresu w programie Excel można ustawić za pomocą kodu.

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

W Twoim konkretnym przypadku, wierzę, trzeba by użyć formatu „# 0,00” lub

+0

Spróbuję. –

+0

Nie można znaleźć tej zmiennej xlWks. Czy to jest arkusz roboczy? –

+0

Tak, to jest zmienna arkusza roboczego. Mam go zdefiniowane wewnętrznie do mojego własnego kodu przy użyciu zmiennej xlWks. – Nevyn

3

Oto fragment kodu, który mam w użyciu, aby pokazać ogólny wzór formatowania komórek. Oczywiście zadeklarowano kilka zmiennych, ale powinny one pokazać ci, czego potrzebujesz.

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); 

To pierwsza linia, zakładając CurrentRowIndex = 1 i ColPrefix = "B", zastępując zmienne z otrzymanych wartości przełoży się

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

W każdym razie, chcesz ustawić NumberFormat. (Coming ..)

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

Dzięki za pomoc, ale to jest nie to, czego szukam. Szukam sposobu formatowania tekstu w komórce, a nie samej komórki, takiej jak tło lub format czcionki. Chcę, aby tekst był interpretowany w inny sposób. –

+0

Ostatni wiersz w mojej odpowiedzi wydaje się odpowiadać na to, czego szukasz. Być może powinienem usunąć resztę, ponieważ jest ona nieistotna. Czasami głupio próbuję być kompletny, kiedy powinienem być zwięzły. ;-) – David

+0

Tak, ostatnia linia rozwiązuje mój problem. Dzięki: D –

Powiązane problemy