web-dev-qa-db-fra.com

Format de monnaie excellente de base avec POI Apache

Je suis capable de faire formater des cellules comme des dates, mais je n'ai pas été incapable de demander au format des cellules sous forme de monnaie ... Quiconque a un exemple de la façon de créer un style pour que cela fonctionne? Mon code ci-dessous montre les styles que je crée ... Le styledateformat fonctionne comme un champion, tandis que stylécurrencyformat n'a aucun effet sur la cellule.

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

}
27
Dave K

Pour au moins Excel 2010: Allez dans Excel. Format une cellule qu'ils y veuillent.

enter image description here

Ensuite, revenez dans le format Dialogue. Sélectionnez Personnalisé.

enter image description here

Copy Coller le texte qu'il a sur la rangée supérieure sous Type: dans

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

Exemple:

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

Assurez-vous de définir votre peupler vos cellules en utilisant un double. L'utilisation de l'index peut entraîner des problèmes avec différentes versions d'Excel. Notez que le nouveau format que vous créez ci-dessus se termine dans le dialogue personnalisé à partir de l'étape deux.

16
Andrew

Juste une mise à jour de la réponse ci-dessus. Court '8' ne fonctionne pas pour moi mais le "7" fait.

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

O/p est de 416,00 $

6
user1073214