Format Excel de base avec Apache POI

je suis capable d'obtenir des cellules pour formater comme Dates, mais j'ai été incapable d'obtenir des cellules pour formater comme monnaie... Quelqu'un a un exemple de comment créer un style pour que cela fonctionne? Mon code ci-dessous montre les styles que je crée... leformat styledate fonctionne comme un champ tandis que leformat stylecurrency 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"));

}
23
demandé sur Wivani 2008-11-26 04:09:44

4 réponses

après avoir creusé un peu plus dans la documentation, j'ai trouvé la réponse:

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

Il suffit de trouver un format prédéfini approprié et de fournir le code.

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

voici plus d'exemples: http://www.roseindia.net/java/poi/setDataFormat.shtml

37
répondu Dave K 2009-12-14 23:48:30

enter image description here

puis revenir au dialogue format. Sélectionnez personnalisé.

enter image description here

copier coller le texte qu'il a sur la ligne du haut sous le Type: dans

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

Exemple:

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

assurez-vous de régler la taille de vos cellules en utilisant un double. L'utilisation de l'indice peut causer des problèmes avec différents les versions d'Excel. Notez que le nouveau format que vous créez ci-dessus se termine dans le dialogue personnalisé de l'étape deux.

13
répondu Andrew 2014-12-03 17:26:07

Juste une mise à jour ci-dessus la réponse. un " 8 "Court ne marche pas pour moi, mais un "7".

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

O/P est de $416.00

5
répondu user1073214 2012-03-28 12:33:15

Vous pouvez essayer ce code pour formater votre cellule avec le mode devise (avec le thowsand separator comme utilisé au Brésil ou en Allemagne. Par exemple. 12.345, 67):

HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\-#,##0.00"));
3
répondu dellasavia 2015-02-09 16:47:46