2008-11-26 93 views
21

Soy capaz de obtener celdas para formatearlas como Fechas, pero no he podido obtener celdas para formatear como moneda ... Alguien tiene un ejemplo de cómo crear un estilo para obtener esto para trabajar? Mi código a continuación muestra los estilos que estoy creando ... styleDateFormat funciona como un champ, mientras que styleCurrencyFormat no tiene efecto en la celda.Formato de moneda básico de Excel con 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

Será bueno si se puede aceptar su propia respuesta en algún momento. ;) –

Respuesta

35

Después de cavar a través de la documentación de un poco más, he encontrado la respuesta:

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

sólo tiene que encontrar un pre apropiada - establecer el formato y suministrar el código.

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

Aquí hay más ejemplos: http://www.roseindia.net/java/poi/setDataFormat.shtml

+0

¡Gracias por publicar esto! –

+3

La lista de formatos integrados está aquí: https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html – bradvido

+0

El resultado se ve bien. Perdónenme, pero si hago clic en 'Formato de celdas' en Excel, simplemente veo que cae en la categoría 'Personalizar'. Ahora, ¿cómo puedo hacer que caiga en la categoría 'Moneda'? – user3454439

5

Apenas una actualización anterior a la respuesta. el '8' corto no funciona para mí, pero el '7' sí.

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

O/P es $ 416,00

+1

Tiene razón. 7 = $ xxx.xx 6 = $ xxx –

12

Por lo menos Excel 2010: Ir a Excel. Formatee una celda de la forma que desee.

enter image description here

A continuación, volver a entrar en el diálogo de formato. Seleccione personalizado

enter image description here

copiar y pegar el texto que tiene en la fila superior en Tipo: en

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

Ejemplo:

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

Asegúrese de configurar su poblar las células mediante el uso de un doble. Usar el índice puede causar problemas con diferentes versiones de Excel. Tenga en cuenta que el nuevo formato que crea arriba termina en el diálogo personalizado del paso dos.

+0

¡Genial! Este es un salvavidas. Puedo obtener la Moneda correcta.Eso significa que si formateo la celda usando este método, cuando abro el documento en Excel, hago clic en la celda, hago clic con el botón derecho para obtener 'Formato de celdas', ¡puedo obtener la 'Moneda' en la categoría de formato! Gracias Gracias gracias – user3454439

2

Puede probar este código para dar formato a su celular con el modo de moneda (.. Con separador thowsand como se ha usado en Brasil o Alemania Ej 12.345,67):

HSSFCellStyle cell = yourWorkBook.createCellStyle(); 
CreationHelper ch = yourWorkBook.getCreationHelper(); 
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00")); 
Cuestiones relacionadas