Pregunta

Puedo hacer que las celdas se formaten como Fechas, pero no he podido hacer que las celdas se formaten como moneda ... ¿Alguien tiene un ejemplo de cómo crear un estilo para que esto funcione? Mi código a continuación muestra los estilos que estoy creando ... el styleDateFormat funciona como un campeón, mientras que styleCurrencyFormat no tiene ningún efecto en la celda.

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

}
¿Fue útil?

Solución

Después de examinar un poco más la documentación, encontré la respuesta:

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

Solo necesito encontrar un formato preestablecido apropiado y proporcionar 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

Otros consejos

Para al menos Excel 2010: Entra en Excel. Formatee una celda como quiera.

ingrese la descripción de la imagen aquí

Luego regrese al diálogo de formato. Seleccionar personalizado.

ingrese la descripción de la imagen aquí

Copie y pegue 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úrate de establecer tu población en tus celdas usando un doble. Usar el índice puede causar problemas con diferentes versiones de Excel. Tenga en cuenta que el nuevo formato que cree arriba termina en el diálogo personalizado del paso dos.

Solo una actualización de la respuesta anterior. 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

Puede probar este código para formatear su celda con el modo de moneda (con miles de separadores como los utilizados 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"));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top