Domanda

Sono in grado di formattare le celle come date, ma non sono stato in grado di formattare le celle come valuta ... Qualcuno ha un esempio di come creare uno stile per farlo funzionare? Il mio codice qui sotto mostra gli stili che sto creando ... styleDateFormat funziona come un campione mentre styleCurrencyFormat non ha alcun effetto sulla cella.

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

}
È stato utile?

Soluzione

Dopo aver approfondito un po 'di più la documentazione, ho trovato la risposta:

http://poi.apache.org/ apidocs / org / apache / PDI / HSSF / usermodel / HSSFDataFormat.html

Devo solo trovare un formato preimpostato appropriato e fornire il codice.

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

Ecco altri esempi: http://www.roseindia.net/java/poi/setDataFormat.shtml

Altri suggerimenti

Per almeno Excel 2010: Vai in Excel. Formatta una cella come preferisci.

inserisci qui la descrizione dell'immagine

Quindi torna alla finestra di dialogo del formato. Seleziona personalizzato.

inserisci qui la descrizione dell'immagine

Copia incolla il testo che ha nella riga superiore in Tipo: in

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

Esempio:

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

Assicurati di impostare il popolamento delle celle utilizzando una doppia. L'uso dell'indice può causare problemi con diverse versioni di Excel. Si noti che il nuovo formato creato sopra termina nella finestra di dialogo personalizzata dal passaggio due.

Solo un aggiornamento alla risposta sopra. '8' corto non funziona per me, ma '7' funziona.

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

O / P è $ 416,00

Puoi provare questo codice per formattare la tua cella con la modalità valuta (con migliaia di separatori come quelli usati in Brasile o Germania. Es. 12.345,67):

HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top