Java - Use jxl NumberFormats or Jxcell setCustomFormat to set number format

當我們產出報表時,如果金額需要產生三位一撇的格式,並且當數字小於零時會自動標記為

紅色,jxl可以使用NumberFormats class來處理,若是JXCell可以使用CellFormat的

setCustomFormat method來自訂格式。

jxl 範例程式碼如下:
  1. Workbook sWorkbook = Workbook.getWorkbook(new File("D:\\template.xls"));
  2. WritableWorkbook wWorkbook = Workbook.createWorkbook(new File("D:\\result.xls"), sWorkbook);
  3. WritableSheet sheet = wWorkbook.getSheet(0);
  4. WritableCellFormat nf1 = new WritableCellFormat(NumberFormats.FORMAT1);
  5. sheet.addCell(new Number(0, 5, 12345, nf1));
  6. sheet.addCell(new Number(1, 5, -12345, nf1));
  7. WritableCellFormat nf2 = new WritableCellFormat(NumberFormats.FORMAT2);
  8. sheet.addCell(new Number(0, 6, 12345, nf2));
  9. sheet.addCell(new Number(1, 6, -12345, nf2));
  10. WritableCellFormat nf3 = new WritableCellFormat(NumberFormats.FORMAT3);
  11. sheet.addCell(new Number(0, 7, 12345, nf3));
  12. sheet.addCell(new Number(1, 7, -12345, nf3));
  13. WritableCellFormat nf4 = new WritableCellFormat(NumberFormats.FORMAT4);
  14. sheet.addCell(new Number(0, 8, 12345, nf4));
  15. sheet.addCell(new Number(1, 8, -12345, nf4));
  16. wWorkbook.write();
  17. wWorkbook.close();


row 6為FORMAT1格式,相當於"#,##0;(#,##0)"

row 7為FORMAT2格式,相當於FORMAT1,但針對負數會另外區別

row 8為FORMAT3格式,相當於"#,##0.00;(#,##0.00)"

row 9為FORMAT4格式,相當於FORMAT3,但針對負數會另外區別


JXCell 範例程式如下:
  1. View m_view=new View();
  2. m_view.read("D:\\template.xls");
  3. ConditionFormat condfmt= m_view.CreateConditionFormat();
  4. CellFormat cf=condfmt.getCellFormat();
  5. cf.setCustomFormat("#,###0.00;[red]-#,###0.00;0.00");
  6. m_view.setSelection(5, 0, 5, 1);
  7. m_view.setCellFormat(cf);
  8. cf.setCustomFormat("#,###;[red]-#,###;0");
  9. m_view.setSelection(6, 0, 6, 1);
  10. m_view.setCellFormat(cf);
  11. m_view.setNumber(0, 5, 0, 12345);
  12. m_view.setNumber(0, 5, 1, -12345);
  13. m_view.setNumber(0, 6, 0, 12345);
  14. m_view.setNumber(0, 6, 1, -12345);
  15. m_view.write("D:\\result2.xls");



JXCell setCustomDormat內設定的字串,語法相當於在Excel使用儲存格的自訂格式!

請注意正數與負數及0用分號隔開,0的部分要訂,否則當此儲存格寫入0時會變成沒有值!


但別忘了[red]要寫英文字才有效XD

留言