2008-11-26 14 views
21

Jestem w stanie przekonać komórki do formatowania jako daty, ale nie udało mi się przekonać komórek do sformatowania jako waluty ... Każdy ma przykład, jak utworzyć styl, aby uzyskać to do pracy? Mój kod poniżej pokazuje style, które tworzę ... styleDateFormat działa jak mistrz, podczas gdy styleCurrencyFormat nie ma wpływu na komórkę.Podstawowy format walutowy programu Excel z Apache POI

private HSSFWorkbook wb; 
private HSSFCellStyle styleDateFormat = null; 
private HSSFCellStyle styleCurrencyFormat = null; 

......

public CouponicsReportBean(){ 
    wb = new HSSFWorkbook(); 
    InitializeFonts(); 

} 

public void InitializeFonts() 
{ 
    styleDateFormat = wb.createCellStyle(); 
    styleDateFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy")); 


    styleCurrencyFormat = wb.createCellStyle(); 
    styleCurrencyFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("$#,##0.00")); 

} 
+0

To będzie super, jeśli można zaakceptować własna odpowiedź kiedyś. ;) –

Odpowiedz

35

Po wykopaniu poprzez dokumentację nieco więcej, znalazłem odpowiedź:

http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDataFormat.html

wystarczy znaleźć odpowiedni pre -setuj format i podaj kod.

styleCurrencyFormat.setDataFormat((short)8); //8 = "($#,##0.00_);[Red]($#,##0.00)" 

Oto więcej przykładów: http://www.roseindia.net/java/poi/setDataFormat.shtml

+0

Dzięki za zamieszczenie tego! –

+3

Lista wbudowanych formatów znajduje się tutaj: https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html – bradvido

+0

Dane wyjściowe wyglądają ładnie. Wybacz mi, ale jeśli kliknę "Formatuj komórki" w Excelu, po prostu widzę, że jest to kategoria "Niestandardowa". Jak mogę to zrobić, aby wpasować się w kategorię "Waluta"? – user3454439

5

właśnie aktualizacja wyżej odpowiedzi. krótkie "8" nie działa dla mnie, ale "7" to robi.

cell.setCellValue(416.17);  
cellStyle.setDataFormat((short)7); 
cell.setCellStyle(cellStyle); 

O/P $ 416,00

+1

Masz rację. 7 = $ xxx.xx 6 = $ xxx –

12

Przynajmniej Excel 2010: Idź do programu Excel. Sformatuj komórkę tak, jak chcesz.

enter image description here

Następnie wróć do dialogu formatu. Wybierz niestandardowy.

enter image description here

Kopiuj wklej tekst to ma na górnym rzędzie pod Rodzaj: do

createHelper.createDataFormat().getFormat("<here>"); 

Przykład:

createHelper.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"); //is the "Accounting" format. 

Upewnij się ustawić zapełnić komórki za pomocą podwójny. Korzystanie z indeksu może powodować problemy z różnymi wersjami programu Excel. Zauważ, że nowy format, który utworzysz, kończy się niestandardowym dialogiem z kroku drugiego.

+0

Świetnie! To jest ratownik. Jestem w stanie poprawić walutę.Oznacza to, że jeśli sformatuję komórkę za pomocą tej metody, kiedy otworzę dokument w programie Excel, kliknij komórkę, prawym przyciskiem myszy, aby uzyskać "Formatuj komórki", jestem w stanie uzyskać "Waluta" w kategorii formatu! Dzięki Dzięki Dzięki – user3454439

2

Można spróbować tego kodu, aby sformatować komórki z trybu waluty (.. Z thowsand separatora jak stosowany w Brazylii czy Niemcy Eg 12.345,67):

HSSFCellStyle cell = yourWorkBook.createCellStyle(); 
CreationHelper ch = yourWorkBook.getCreationHelper(); 
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00")); 
Powiązane problemy