Why poi REFUSES to support the FIRST option in excel currency formatting is beyond me!
I don t like using the DecimalFormat for currency because your end cell value becomes a non-numeric with the introduction of the currency symbol. While working for a major financial institution, I was tasked with resolving this formatting issue. The core idea of this change is, because POI refuses to be reasonable and have comprehensive support of Excel s native options, I will infiltrate their code and change their values at the core. The following is my WORKAROUND:
private static final String CURRENCY_FORMAT_OVERRIDE = ""$"#,##0.00_);-"$"#,##0.00";
private static final String CURRENCY_FORMAT_TARGET = ""$"#,##0.00_);("$"#,##0.00)";
static { // static class level initializer
Field field = org.apache.poi.ss.usermodel.BuiltinFormats.class.getDeclaredField("_formats");
field.setAccessible(true);
String[] _formats = (String[])field.get(new org.apache.poi.ss.usermodel.BuiltinFormats());
for(int i = 0; i < _formats.length; ++i) {
if(_formats[i].equals(CURRENCY_FORMAT_TARGET)) {
_formats[i]=CURRENCY_FORMAT_OVERRIDE;
System.out.println("TAKE THAT, POI!!!");
}
}
}